yiku478319864 2017-12-04 08:39 采纳率: 0%
浏览 1180

vfork为什么子进程执行过的程序,父进程不执行了?

#include
#include
#include

void test()
{
pid_t pid;
pid=vfork();
if(pid==-1)
{
perror("vfork");
exit(EXIT_FAILURE);
}
else if(pid==0)
{
printf("1:child pid=%d,ppid=%d\n",getpid(),getppid());
}
else
{
printf("2:parent pid=%d,ppid=%d\n",getpid(),getppid());
}
}

void fun()
{
int buf[100];
for(int i=0;i<100;i++)
{
buf[i]=0;
}
printf("3:child pid=%d,ppid=%d\n",getpid(),getppid());
_exit(0);
}

int main()
{
pid_t pid;
test();
fun();
printf("hello\n");
}
图片说明


  • 写回答

5条回答 默认 最新

  • sibadakesiaa 2017-12-18 05:14
    关注

    这个问题你只要知道,当你创建了一个新的进程以后,子进程父进程的执行顺序是不确定的就行了!
    你可以输出几次试试,结果可能会不一样,另外你在fun函数中循环100次对编译器而言,时间基本可
    忽略,你试着在循环中使用printf试试,printf函数很占用资源的。
    或者直接sleep几秒。

    如有帮助请采纳。

    评论

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办