【发布时间】:2018-06-28 03:53:49
【问题描述】:
我想使用信号 (SIGUSR1) 来同步 C 中的进程。我希望父进程等待一个信号,当接收到这个信号时,将相同的信号发送给子进程。我写了一小段来激发推理,但它并没有消失。
#include <sys/types.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
void trataSIGUSR1(int sigNum) {
printf("SIGUSR1\n");
}
int main(void) {
pid_t pid;
struct sigaction sa;
pid = fork();
if (pid == 0) {
struct sigaction sa = {0};
sa.sa_handler = trataSIGUSR1;
sa.sa_flags = 0;
sigemptyset(&sa.sa_mask);
sigaction(SIGUSR1,&sa,NULL);
pause();
printf("This never execute");
} else {
printf("I'am father: %d!\n",getppid());
kill(0,SIGUSR1);
pause();
}
}
输出
I'am father: 12082!
User defined signal 1: 30
【问题讨论】:
-
也许尝试在父级中等待信号,然后尝试向父级发送信号。
-
我该怎么做?我不知道如何等待信号,我不想使用忙等待。
-
你能告诉我如何使用它吗?我可以设置一个特定的信号以在
pause()之后继续代码? -
试试
sigaction() - examine and change a signal action。如需更多详细信息,只需输入man sigaction。