gpt4 book ai didi

c++ - vfork()../nptl/sysdeps/unix/sysv/linux/raise.c : No such file or directory

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:48:18 28 4
gpt4 key购买 nike

当我尝试使用 vfork() 时遇到问题。这是代码!

#include <stdio.h>
#include <unistd.h>

main()
{
if(vfork() == 0)
{
printf("This is the child process\n");
} else{
printf("This is the parent process\n");
}
}

并使用 gdb 错误信息进行调试:

(gdb) r
Starting program: /home/shawn/Documents/gcc/demo/./a.out
This is the child process
This is the parent process
a.out: cxa_atexit.c:99: __new_exitfn: Assertion `l != ((void *)0)' failed.

Program received signal SIGABRT, Aborted.
0x00007ffff7a48f77 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.

有人可以帮忙吗?

我正在使用:

  • ubuntu 13.10 64 位操作系统
  • gcc 版本 4.8.1(Ubuntu/Linaro 4.8.1-10ubuntu8)

最佳答案

“没有这样的文件”消息是因为您没有可用的 C 库的源代码。我不会担心的;你很少需要看那个。

崩溃是因为您滥用了 vfork。您可以在子进程中做的唯一有效的事情是调用 execve 或类似的,用另一个程序替换进程,或调用 _exit(不是 exit) 退出。如果 child 试图修改任何数据、从调用 vfork 的函数返回或调用另一个函数,您会得到未定义的行为。

如果您希望子进程成为父进程的克隆并且能够继续运行相同的程序,请使用 fork 而不是 vfork

关于c++ - vfork()../nptl/sysdeps/unix/sysv/linux/raise.c : No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19702618/

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