本文共 1406 字,大约阅读时间需要 4 分钟。
一.测试fork()函数
#include#include #include int main(){ pid_t child; if((child=fork())==-1) { printf("Fork error"); exit(1); } if(child==0)//子进程 { printf("子进程的pid为%d\n",getpid()); exit(0); }else //主进程 { printf("主进程的pid为%d\n",getpid()); exit(0); }}
编译与执行:
//编译gcc fork.c -o fork//执行./fork
结果:一般来说,父进程和主进程是不分先后同时运行的,但是由于该程序代码较少,运行时可能因为子进程要执行复制等功能所以父进程一直比子进程快
主进程的pid为2449子进程的pid为2450
二:测试vfork()函数
#include#include #include int main(){ pid_t child; if((child=vfork())==-1) { printf("Fork error"); exit(1); } if(child==0)//子进程 { sleep(1); printf("子进程的pid为%d\n",getpid()); exit(0); }else //主进程 { printf("主进程的pid为%d\n",getpid()); exit(0); }}~
编译与执行与上述一致
//一秒之后同时显示,且总是子进程优先于主进程显示子进程的pid为2539主进程的pid为2538
转载地址:http://wymvn.baihongyu.com/