【发布时间】:2014-12-22 09:47:18
【问题描述】:
我读到当父进程在子进程执行之前终止时,子进程将发送 SIGHUP 和 SIGCONT 信号。那么这将在init进程下工作。 所以我想知道子进程是否产生信号? 为此我制定了这样的程序,但我没有收到任何消息,如收到信号。
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<signal.h>
void handler(int signo)
{
if(signo == SIGHUP)
printf("SIGHUP present\n");
else if (signo == SIGCONT)
printf("SIGCONT present\n");
}
main()
{
pid_t pid;
signal(SIGCONT,handler);
signal(SIGHUP,handler);
if((pid=fork()) == 0)
{
sleep(5);
printf("Child terminated\n");
exit(0);
}
exit(0);
}
【问题讨论】:
-
请你澄清你问题的第一段,注意英文。正如所写,这对我来说毫无意义。特别是,what 意味着发送
SIGHUP或SIGCONT?我怀疑你是想在这里询问流程组和流程组负责人。 -
@abligh - 当父进程在其子进程执行之前终止时,子进程将成为孤儿。那个时候子进程会产生一个信号来继续执行,这个信号号是
SIGHUPANDSIGCONT。你懂不懂?? -
@Bhavanesh 我理解各个单词(并且对 UNIX 信号处理有很好的了解),但作为一个问题似乎没有多大意义。我怀疑英语可能不是您的第一语言,我知道这会使其变得更加困难,但我认为如果您仔细地表达您的问题以便尽可能多的人能够理解它,您将会获得更大的成功。
-
@abligh - 嗯好的,谢谢你的回复,如果我做错了,你可以编辑它,然后我会更正它