关于父子进程执行顺序的问题刚刚学Linux下C程序开发,看的是清华大学出版社出版的《Linxu C 程序基础与实例
关于父子进程执行顺序的问题
刚刚学Linux下C程序开发,看的是清华大学出版社出版的《Linxu C 程序基础与实例讲解》,我现在对父子进程的执行顺序感到很困惑。书上的例子是先子进程后父进程。但在我的电脑上(Ubuntu 10.10)却是先父进程后子进程。
网上说,这是内核进程调度问题,请问一下这是怎么搞得,这样的程序是无法跨平台使用的吧?
附书上的例子:
- C/C++ code
//fork()#include <stdio.h>#include <unistd.h>#include <sys/types.h>int main(){ pid_t child_pid; child_pid=fork(); switch(child_pid) { case -1: printf("Create process failed!\n"); break; case 0: printf("Child process with ID : %d .\n",(int)getpid()); break; default: printf("Parent process with ID : %d ,Child process ID : %d .\n",(int)getpid(),(int)child_pid); break; } return 0;}运行结果:
Parent process with ID : 30394 ,Child process ID : 30395 .
Child process with ID : 30395 .
[解决办法]
fork后,是不确定先执行哪个的,哪个都有可能先执行。
[解决办法]
fork就是这样的,父子进程的执行顺序不确定,谁先执行都有可能。
如果需要确定的执行顺序,就得想别的办法。
比如用vfork,保证子进程先运行。
[解决办法]
[解决办法]
父子进程的执行顺序是不确定的,不要依赖这种顺序
如果实在需要顺序,可以考虑某种进程间通信机制,如管道、信号灯..
