暂停时向子进程发送信号
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...");
}
像main 5053
一样在Linux终端中调用它,输出是:
PID=1939
PARENT: sending SIGHUP
唯一要更改的是 sleep
之后移动 kill
以将子进程时间分配给 运行。
{
...
printf("\nPARENT: sending SIGHUP\n\n");
kill(pid, SIGHUP);
sleep(3); //wait 3 secs
...
}
我的目标是在创建子进程后暂停它。然后我想中断暂停,我通过 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...");
}
像main 5053
一样在Linux终端中调用它,输出是:
PID=1939
PARENT: sending SIGHUP
唯一要更改的是 sleep
之后移动 kill
以将子进程时间分配给 运行。
{
...
printf("\nPARENT: sending SIGHUP\n\n");
kill(pid, SIGHUP);
sleep(3); //wait 3 secs
...
}