gpt4 book ai didi

C - 如何正确使用SIGUSR1?

转载 作者:行者123 更新时间:2023-11-30 16:31:44 24 4
gpt4 key购买 nike

我在 Google 上进行了广泛的搜索,但没有找到有关如何使用用户定义信号 (SIGUSR1/SIGUSR2) 的明确说明。

上下文:我试图在正在运行的进程中发送信号,以便一旦发送信号,信号处理程序将打印一条语句来告诉用户该信号已被捕获。我尝试使用信号处理程序,如下所示。

void signalHandler(int signalNum) {
if (signalNum == SIGUSR1) {
printf("Caught SIGUSR1 signal.\n");
}
}

/* Call in main as follows */
signal(SIGUSR1, signalHandler);
现在,根据我的理解,可以通过使用我尝试过的 raise() 函数在进程内引发信号(我正在尝试执行以下操作,而无需 fork 或使用后续的子/父进程)。当采用我上面展示的方法时,程序永远不会执行信号处理函数内的任何代码,即使它是 if 语句之前的 print 语句。

在此之后,我也尝试过:

signalHandler(raise(SIGUSR1));

如果我的方法被禁止,请原谅,我来自 Python 背景。谢谢!

编辑:我需要程序自动向自身发出信号,捕获信号,打印消息,然后停止执行。不使用 CLI。

最佳答案

您可以使用 kill 向进程发送信号命令。所有信号的列表可在 signal 上找到。手册页。

您可以使用 ps 命令识别进程的 pid 并将信号发送为

kill -10 <pid>

如果您想从终端向外部发送信号,则可以使用此方法。如果您希望进程本身发送信号(或引发信号),可以使用 raise作为 -

raise(SIGUSR1);

相同的演示是 here .

如果您想以编程方式从另一个进程发送信号,您可以使用 kill 作为 -

kill(pid, SIGUSR1);

关于C - 如何正确使用SIGUSR1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50446496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com