gpt4 book ai didi

CTRL-C 不会杀死程序 linux/C

转载 作者:太空宇宙 更新时间:2023-11-04 06:52:25 27 4
gpt4 key购买 nike

char *args = "echo hey";

pid_t pid = fork();
if(pid == 0) {
while(1) {
pid2 = fork();
wait(NULL);
}
}

如果我有这样的程序

$ gcc -Wall above.c
$ ./a.out
hey
hey
hey
hey
hey
hey
C^hey
hey

Ctrl+C 不会终止程序,如何让 Ctrl+C 停止 child 不运行?

最佳答案

启动代码的父进程可能在第一个子进程处于无限循环内时退出,因此子进程不再接收键盘输入。

您需要让父进程等待第一个子进程以保持父进程运行:

if(pid == 0) {
while(1) {
pid2 = fork();
if(pid2 == 0) {
execlp("sh", "sh", "-c",args, (char *)NULL);
perror("sh");
return(1);
}
wait(NULL);
}
} else {
wait(NULL);
}

关于CTRL-C 不会杀死程序 linux/C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49393047/

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