gpt4 book ai didi

linux - 当我终止父进程时守护进程死了

转载 作者:太空宇宙 更新时间:2023-11-04 12:11:19 24 4
gpt4 key购买 nike

<分区>

我希望 ubuntu linux 上的以下代码创建一个守护进程,它是 systemd 的子进程并不断打印“做某事”。

#include <unistd.h>
#include <stdlib.h>

int main()
{
int pid1, pid2;
int status;

if (pid1 = fork()) {
waitpid(pid1, &status, NULL);
}
else if (!pid1) {
if (pid2 = fork()) {
// use exit. return sometimes stop forking
exit(0);
}
else if (!pid2) {
while(1) {
sleep(1);
puts("do something");
}
}
else {
perror("error occured");
return -1;
}
}
else {
perror("error occured");
return -1;
}

while(1) {
sleep(1);
puts("parent do something.");
}
}

但是当我中断父进程时,它生成的守护进程也终止了。当我在后台运行代码时,守护进程才活着。为什么会这样?

当我在后台运行时,守护进程处于事件状态。

$ ./a.out &

parent do something.
do something
parent do something.
do something
(ctrl + c)
do something
do something
do something

当我不在后台运行时守护进程终止。

$ ./a.out

parent do something.
do something
parent do something.
do something
(ctrl + c)
// not printing anymore
$

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