gpt4 book ai didi

c - fork(),子进程不转储核心,父进程正常

转载 作者:行者123 更新时间:2023-11-30 16:29:44 24 4
gpt4 key购买 nike

“ulimit -c unlimited”已完成。这是代码:

main()
{
do
{
pid_t pid = fork();
int stat_loc;
if(pid < 0)
exit(1);
else if(pid > 0)
{
waitpid(pid, &stat_loc, 0);
sleep(5);
}
else
break;
}
while(1);

assert(0);
}

如果我用assert(0)替换sleep(5),父进程会转储核心。

最佳答案

在应用程序的调试版本上调用assert(0) should cause an abort :

If the argument expression of this macro with functional form compares equal to zero (i.e., the expression is false), a message is written to the standard error device and abort is called, terminating the program execution.

您实际上想在这里做什么?看来你的 fork 逻辑可能有问题。通常,您可以测试 pid == 0 来查看您是否位于子进程中,并测试 pid > 0 来查看您是否位于父进程中,like this :

pid_t pid = fork();
if (pid == 0) {
// child process because return value zero
printf("Hello from Child!\n");
} else if (pid > 0) {
// parent process because return value non-zero.
printf("Hello from Parent!\n");
} else {
printf("Error occurred.\n");
}

在您的问题中,您要检查 > 0 和 < 0。

编辑:添加错误检查分支。

关于c - fork(),子进程不转储核心,父进程正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51611172/

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