当前位置:  技术问答>linux和unix

关于父子进程执行顺序的问题

    来源: 互联网  发布时间:2017-02-18

    本文导语:  刚刚学Linux下C程序开发,看的是清华大学出版社出版的《Linxu C 程序基础与实例讲解》,我现在对父子进程的执行顺序感到很困惑。书上的例子是先子进程后父进程。但在我的电脑上(Ubuntu 10.10)却是先父进程后子...

刚刚学Linux下C程序开发,看的是清华大学出版社出版的《Linxu C 程序基础与实例讲解》,我现在对父子进程的执行顺序感到很困惑。书上的例子是先子进程后父进程。但在我的电脑上(Ubuntu 10.10)却是先父进程后子进程。
网上说,这是内核进程调度问题,请问一下这是怎么搞得,这样的程序是无法跨平台使用的吧?
附书上的例子:

//fork()
#include 
#include 
#include 
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 .


|
父子进程哪个先运行时看内核的调度算法,在我们使用者看来,就是不确定的,LZ不要纠结了。switch 语句相当于并发处理,各个case之间一起运行的,父子进程之间谁运行时不可知的。1楼那个程序最后一个else里如果没有sleep和wait,谁先运行也是不可知的。
      如果你很想控制他们谁先运行,可以使用sleep,先让一个睡一会嘛,只要sleep了,就肯定后运行。或者父进程中使用wait,等待子进程,那么很显然就是子进程在运行。
       vfork的使用好像并不能控制运行顺序。
       建议LZ去看《unix坏境高级编程》,好好体会那里面的代码,会大有收获的

|
父子进程的执行顺序是不确定的,不要依赖这种顺序
如果实在需要顺序,可以考虑某种进程间通信机制,如管道、信号灯..

|
fork后,是不确定先执行哪个的,哪个都有可能先执行。

|
fork就是这样的,父子进程的执行顺序不确定,谁先执行都有可能。
如果需要确定的执行顺序,就得想别的办法。
比如用vfork,保证子进程先运行。

    
 
 

您可能感兴趣的文章:

  • fork() 父子进程执行顺序问题
  • 深入分析父子线程、进程终止顺序不同产生的结果
  • 请教,进程通讯问题,除了父子进程能进行通讯外,任意两个进程都可以吗?
  • 在linux,如何用共享内存来实现进程间的通讯?(这些进程没有父子关系)
  • 父子进程读写文件问题
  • 父子进程共享数据的问题
  • 使用信号量如何让父子进程交替运行?
  • 父子进程问题,高手请进!!!
  • 请教一个父子进程控制的问题
  • 父子进程共享文件描述符问题
  • 高手请进,如何完备的获得进程间父子关系,谢谢!
  • 父子进程通信:内存共享的问题
  • 父子进程通信
  • 父子进程问题
  • 如何理解父子进程修改共享量的运行结果
  • 关于fork后父子进程的关系
  • 父子进程间的数据传输!online!
  • 父子进程间的信号通讯问题
  • fork()的父子进程返回ID
  • apue中父子进程同步的问题。
  • fork下父子进程内存的问题
  • 父子进程关系问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 关于父子共用一个socket的问题?求教。。
  • jquery的父子兄弟节点查找示例代码
  • DevExpress实现TreeList父子节点CheckState状态同步的方法
  • 请教个父子进程管道问题
  • 用记录锁fcntl来实现父子进程同步
  • 父子进程中数据地址的问题
  • 父子进程拷文件程序的几处不懂得地方
  • 关于父子进程控制
  • 如何可以让父子进程交替输出
  • 父子进程交互输出问题。
  • 兄弟们,出手吧----》父子进程间相互通信问题
  • 管道和父子进程的问题
  • [新手求解]父子进程交替执行的问题
  • 父子进程之间管道通信问题
  • 在用管道通信父子进程遇到问题
  • 在linux下,用共享内存来实现进程间的数据交互,请问如何实现同步?(这些进程没有父子关系)
  • 浙ICP备11055608号-3 iis7站长之家
  • 不显示删除回复显示所有回复显示星级回复显示得分回复 父子进程间通信:1:共享内存2:信号量:父进程里请求信号量错误,高手帮忙


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3