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 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛