【发布时间】:2023-03-15 04:58:01
【问题描述】:
我有一个需要使用信号和处理程序的程序。我有两个子进程应该接收用户定义的信号,一个应该对信号不做任何事情,而另一个应该打印出一些通用消息,睡眠,然后打印出另一条指示停止结束的消息.应该对信号不做任何事情的一个子进程应该是发出信号的那个。
我很确定信号是用符号signal(SIGINT, handler); 上升的,所以我只需将它放在由一个子进程定义的函数中,但我如何将信号“发送”到两个进程?我怎么能在一组条件下说一个进程接收信号并按照处理程序的指示执行操作,而另一个进程接收信号并且什么也不做?
我正在阅读有关kill(pid, handler) 如何能够将指定进程发送到处理程序的信息,但是每当我尝试它时,它都会告诉我 kill 的参数 1 从没有强制转换的指针中生成整数。
我的程序是一个阅读器/编写器程序,它几乎没有明确的目的测试概念,现在,都在一个源文档中,但将被分成一个阅读器源来定义阅读器进程的功能,一个writer 源,它将定义 writer 进程的功能,然后是创建两个子进程的主要源。我还将有一个头文件,它将定义所有必要的常量和函数原型,但是现在,如果我可以从这个源中让它工作,我可以稍后弄清楚如何将它分成多个源。
【问题讨论】:
-
signal注册一个信号处理程序;它不会发出信号。 -
首先,如果您还没有看过 GNU C 手册中关于信号的章节,您的大部分问题都会得到解答:gnu.org/software/libc/manual/html_node/Signal-Handling.html
-
@spade78 感谢您的参考 - 我一定会仔细阅读以更好地了解信号的情况。我的导师主要给我代码来尝试查看和破译正在发生的事情,这就是为什么我认为
signal会发出信号,因为当我运行给定代码段的调试会话时,它似乎在做这件事.在全网挖掘解释时,我从未遇到过此资源。然而不幸的是,人们坚持因为我缺乏理解而惩罚我。 -
您可能还想查看open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf的标准7.14.1
-
@Newwisdom01 - 这不是惩罚,只是在处理家庭作业时,在哪里划清帮助和直接提供答案之间的界限。