在uclinux中多进程vfork,fork是如何运作的?
时间:2005-05-18
来源:互联网
写了几行代码,测试uclinux中的fork,vfork,主要想搞清程序执行流程,
同样的代码,但用fork与vfork执行多进程,程序流程不同,fork执行报错,
但网上资料说在uclinux中fork与vfork是相同的,
请教为什么会有这个差别?怎么找得到uclinux的资料?谢谢!
同样的代码,但用fork与vfork执行多进程,程序流程不同,fork执行报错,
但网上资料说在uclinux中fork与vfork是相同的,
请教为什么会有这个差别?怎么找得到uclinux的资料?谢谢!
作者: lgh517 发布时间: 2005-05-18
下面的代码为什么不进入子进程?
#include <stdio.h>
int main(void)
{
int i,j,k=0,pid;
printf("****** Test App By LGH! in a.c *******\n");
pid=vfork();
printf(" pid= %d\n",pid);
if(pid=0){
printf(" %d pid enter child\n",pid);
for(i=0;i<10;i++){
printf(" *** %d child in a.c \n",i);usleep(100);
}
exit(0);
}
else{sleep(1);
for(i=0;i<10;i++){
printf(" === %d parent in a.c \n",i);usleep(9999);
}
wait();
}
wait();
printf("\n run end! in a.c \n");
exit(0);
}
#include <stdio.h>
int main(void)
{
int i,j,k=0,pid;
printf("****** Test App By LGH! in a.c *******\n");
pid=vfork();
printf(" pid= %d\n",pid);
if(pid=0){
printf(" %d pid enter child\n",pid);
for(i=0;i<10;i++){
printf(" *** %d child in a.c \n",i);usleep(100);
}
exit(0);
}
else{sleep(1);
for(i=0;i<10;i++){
printf(" === %d parent in a.c \n",i);usleep(9999);
}
wait();
}
wait();
printf("\n run end! in a.c \n");
exit(0);
}
作者: lgh517 发布时间: 2005-05-18
vfork不是不进入,而是子进程运行后,父进程将会停止,直到子进程退出。还有
if(pid=0){ //你这是什么东东阿?
。。。。
if(pid=0){ //你这是什么东东阿?
。。。。
作者: flag 发布时间: 2005-05-18
谢谢,不好意思,老犯这种错误!
流程基本搞懂了,
uclinux中只能用vfork, 若用fork会返回-1
子进程调用exec执行aa后,aa与父进程并行执行.
子进程中若exec正确执行,则exec后面的代码不会执行.
问题: uclinux中多进程时,父子进程执行先后顺序是不是一定的? 即vfork后是子进程先执行还是父进程先执行? (看起来好象按代码先后顺序执行的)
流程基本搞懂了,
uclinux中只能用vfork, 若用fork会返回-1
子进程调用exec执行aa后,aa与父进程并行执行.
子进程中若exec正确执行,则exec后面的代码不会执行.
问题: uclinux中多进程时,父子进程执行先后顺序是不是一定的? 即vfork后是子进程先执行还是父进程先执行? (看起来好象按代码先后顺序执行的)
作者: lgh517 发布时间: 2005-05-18
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28