gpt4 book ai didi

c - wait() 等待子进程崩溃

转载 作者:行者123 更新时间:2023-11-30 17:50:45 25 4
gpt4 key购买 nike

我有以下程序

int external_apply(char *type)
{
int pfds[2];
if (pipe(pfds) < 0)
return -1;

if ((pid = fork()) == -1)
goto error;

if (pid == 0) {
/* child */

const char *argv[8];
int i = 0;
argv[i++] = "/bin/sh";
argv[i++] = "script_file.sh";
argv[i++] = "apply";

close(pfds[0]);
dup2(pfds[1], 1);
close(pfds[1]);

execvp(argv[0], (char **) argv);
exit(ESRCH);

} else if (pid < 0)
goto error;

/* parent */
close(pfds[1]);

int status;
while (wait(&status) != pid) {
printf("waiting for child to exit");
}

return 0;

error:
close(pfds[0]);
return -1;
}

fork 调用我的脚本文件。脚本文件包含导致管道关闭(有时)的命令。如果管道被 scipt 关闭,则等待将导致程序崩溃。

如何避免脚本关闭管道时程序崩溃?

最佳答案

出现错误时,将 return -1 替换为 _exit(-1)

关于c - wait() 等待子进程崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17070425/

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