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

敬请关注;关于系统进程的c 语言程序

    来源: 互联网  发布时间:2014-12-31

    本文导语:  该程序在Linux gcc下运行 fork(   )在运行态下返回0,在成功创建情况下返回true,创建失败返回-1 #include  main( ) {int p1,p2; while((p1=fork( ))==-1);  /*创建不成功就一直创建*/ if(p1==0) putchar('b'); else {while((p2=fork( ))==-...

该程序在Linux gcc下运行
fork(   )在运行态下返回0,在成功创建情况下返回true,创建失败返回-1

#include 

main( )
{int p1,p2;
while((p1=fork( ))==-1);  /*创建不成功就一直创建*/

if(p1==0)
putchar('b');
else
{while((p2=fork( ))==-1);
if(p2==0)
putchar('c');
else
putchar('a');
}
}

运行结果
  bca
 小弟真搞不懂,if…else…语句不是二者只执行其一吗,为什么它把所有的语句都执行完了。


|
你的程序逻辑就是这样的,你肯定不知道fork做了什么,hehe 
fork执行后,会自动复制当前的程序,并且从fork后的语句执行,如果是子进程fork返回0,父进程返回一个正数,你的
if(p1==0)
     putchar('b');就是让第一次创建的子进程执行的
同理,当第二次fork后,if(p2==0) {
                        putchar('c');又第二个子进程执行
最后父进程执行 putchar('a');


|
#include 

main( ) 
{

int p1,p2;
while((p1=fork( ))==-1);

        if(p1==0)
                putchar('b');
        else {
                while((p2=fork( ))==-1);
                        if(p2==0) {
                        printf("The reture code is %d!n",p2);
                        putchar('c');
                        }
                        else {
                                printf("The process ID %d!n",p2);
                                putchar('a');
                        }
                }
}

Results:
bThe reture code is 0!
cThe process ID 3856!
a

|
man fork吧,很清楚地说明了的,如果失败就return -1;
如果成功就返回两次,第一次返回0表示fork成功,第二次返回子进程的PID,PID肯定大于0了。

man吧,如果不够详细就info吧。

|
fork是30年前unix系统上的里程碑式的调用,要好好看书和写代码理解。
fork,vfork,execl......

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 节日快乐 敬请有经验或是……(要多少分给多少分)
  • SCO问题敬请关注!
  • redhat9下网页中页面显示的问题,敬请赐教~~~
  • www.javacn.net正式开通敬请光临
  • 敬请关注 Grub 移位???????????
  • 来自IBM developerWorks的调查,敬请关注
  • 有没有Java的DirectDraw类库包,敬请赐教!
  • S3C2410 SPI驱动问题(高手敬请入场)
  • 敬请高人:还是linux的安装问题,谁让它太麻烦呢!!
  • 简单问题,敬请赐教!
  • Linux下写串口操作,对每次发送的数据要分多次写,不能一次写完,敬请高手赐教
  • 敬请高手指教:如何取得数据库服务器的信息?100分。。。
  • 线程同步问题?敬请朋友指教!!
  • Linux下读串口操作,对每次发的数据要分多次读,不能一次读完,敬请高手赐教
  • 技嘉主板60xe(intel 815ep)不能进入自检状态,敬请帮忙指教!
  • 有谁知道ramdrive.sys在dos下的详细用法,敬请赐教,倍感感激!!
  • 最简单的Applet程序为何运行不出来?敬请师长们来批改我JAVA第一课的小作业!
  • 关于打包升级的问题,敬请高手赐教。


  • 站内导航:


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

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

    浙ICP备11055608号-3