当前位置: 技术问答>linux和unix
关于子进程的执行
来源: 互联网 发布时间:2016-08-27
本文导语: if((pid=fork())pid=getpid(); raise(SIGSTOP);//阻塞子进程 上面那几行代码是我从程序中截取的,我每次fork()后得到的pid都是大于0的, 我有个疑问,就是pid==0什么时候成立,子进程什么时候执行? | 子进程得到的返回...
if((pid=fork())pid=getpid();
raise(SIGSTOP);//阻塞子进程
上面那几行代码是我从程序中截取的,我每次fork()后得到的pid都是大于0的,
我有个疑问,就是pid==0什么时候成立,子进程什么时候执行?
|
子进程得到的返回值就是0啊,至于子进程执行的时间则不一定,不能保证父进程还是子进程先执行
|
你可以在pid==0的情况下加一些输出,就知道什么时候进入子进程了
父进程和子进程执行顺序是不好保证的。
父进程和子进程执行顺序是不好保证的。
|
raise(SIGSTOP);//不是阻塞子进程而是让子进程退出了,下面的程序根本执行不到
如果要保证父进程先执行,可以使用sched_yeild();主动让出CPU,
等以后调度执行。
|
不一定放弃了执行之后下一次调度到子进程时父进程已经执行了,应该使用进程间同步
|
子进程是父进程的拷贝,让父进程睡眠几秒钟,就可以看到子进程的执行