[英]Sending signal to child process on pause
我的目標是在創建子進程后暫停子進程。 然后我想中斷暫停,並通過從父進程通過kill()
發送的信號來完成。 主要問題是在這種情況下我應該把pause()
放在哪里。
這是我到目前為止所得到的:
int main()
{
int pid;
if ((pid = fork()) < 0) //error occured
{
perror("fork");
exit(1);
}
if (pid == 0) //___Child___
{
signal(SIGHUP, sighup);
printf("Tryna work with pause():\n");
printf("Before pause:\n");
pause();
printf("After pause.\n");
for(;;) //infinite loop
;
}
else //___Parent___
{ /* pid hold id of child */
printf("\nPID=%d\n\n",pid);
printf("\nPARENT: sending SIGHUP\n\n");
kill(pid, SIGHUP);
sleep(3); //wait 3 secs
}
}
void sighup()
{
signal(SIGHUP, sighup) //reset signal;
printf("In handler...");
}
在 Linux 終端中調用它,如main 5053
和 output 是:
PID=1939
PARENT: sending SIGHUP
唯一需要改變的是在sleep
后移動kill
給子進程運行時間。
{
...
printf("\nPARENT: sending SIGHUP\n\n");
kill(pid, SIGHUP);
sleep(3); //wait 3 secs
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.