linux进程的创建小例题

       1 #include <unistd.h>
      2 #include <sys/types.h>
      3 #include <sys/wait.h>
      4 #include <stdio.h>
      5 #include <errno.h>
      6 #include <math.h>
      7 #include <stdlib.h>
      8 int main(void)
      9 {
     10     pid_t child;
     11     int status;
     12     printf("This will demostrate(演示) how to get child status./n");
     13     if((child=fork())==-1)/*当fork调用失败时候(内存不足或者用户的最大进程数已到,fork返回-1)*/
     14      {
     15          printf("Fork Error: %s/n",strerror(errno));
     16          exit(1);
     17      }
     18      else if(child==0)
     19      {
     20           int i;
     21           printf("I am the child:%ld/n",getpid());
     22           for(i=0;i<1000000;i++)  sin(i);
     23           i=5;
     24           printf("I exit with %d/n",i);
     25           exit(i);
     26      }
     27      while(((child=wait(&status))==-1)&(errno==EINTR));/*wait调用会使父进程阻塞直到一个子进程结束或者是父进程接受到了一个信号,如果没有父进程没有子进程或者他的>        子进程已经结束了wait会立即返回。成功时候,wait将返回进程ID,否则返回-1,并设置全局变量errno.stat_loc是子进程的退出状态.子进程调用exit,_exit或者return 来设置这个
        值。为了得到这个值,Linux定义了宏来测试这个返回值.WIFEXITED: 会使父进程阻塞直到一个子进程结束或者是父进程接受到了一个信号,如果没有父进程没有子进程或者他的子进>        程已经结束了wait会立即返回。成功时候,wait将返回进程ID,否则返回-1,并设置全局变量errno.stat_loc是子进程的退出状态.子进程调用exit,_exit或者return 来设置这个值,>        为了得到这个值,Linux定义几个宏来测试这个返回值。WIFEXITED:判断子进程退出值是否0,WEXITSTATUS:判断子进程的退出值(子进程退出非0);WIFSIGNALED:子进程由于没有获>        得信号而退出*/
     28      if(child==-1)
     29          printf("Wait Error: %s/n",strerror(errno));
     30      else if(!status)
     31          printf("Child %ld terminated normally return status is zero /n",child);
     32      else if(WIFEXITED(status))
     33          printf("Child %ld terminated normally return status is %d/n",child,WEXITSTATUS(status));
     34      else if(WIFSIGNALED(status))
     35          printf("Child %ld terminated due to signal %d znot caught/n",child,WTERMSIG(status));
     36     return 0;
     37 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值