当前位置: 技术问答>linux和unix
linux vfork函数问题
来源: 互联网 发布时间:2017-05-21
本文导语: #include #include int main(int argc, char *argv[]) { int cnt = 0; vfork(); cnt++; printf("%dn", cnt); return 0; } 为什么输出有很多对1和2? 输出应该只有一对1和2才对啊! | 子进程需要调用exit或者exec,...
#include
#include
int main(int argc, char *argv[])
{
int cnt = 0;
vfork();
cnt++;
printf("%dn", cnt);
return 0;
}
为什么输出有很多对1和2?
输出应该只有一对1和2才对啊!
#include
int main(int argc, char *argv[])
{
int cnt = 0;
vfork();
cnt++;
printf("%dn", cnt);
return 0;
}
为什么输出有很多对1和2?
输出应该只有一对1和2才对啊!
|
子进程需要调用exit或者exec,这是vfork和fork的区别之一。
在return前面加一行_exit(0);
在return前面加一行_exit(0);
|
The vfork() function has the same effect as fork(), except that the behaviour is undefined if the process created by vfork() either modifies any data other than a variable of type pid_t used to store the return value from vfork(), or returns from the function in which vfork() was called, or calls any other function before successfully calling _exit() or one of the exec family of functions.
#include
#include
#include
#include
int main(int argc, char *argv[])
{
int cnt = 0;
pid_t pid;
pid = vfork();
cnt++;
printf("%dn", cnt);
if (pid == 0)
_exit(0);
return 0;
}