码迷,mamicode.com
首页 > 系统相关 > 详细

操作系统-进程控制

时间:2018-12-04 22:34:12      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:lin   区别   操作系统   lse   关闭   bsp   void   stdio.h   一个   

fork()

  使用fork创建一个子进程

  在子进程从此时开始执行,并不执行fork前的内容

  fork在父进程中返回子进程的PID, 在子进程中返回0

  子,父进程是并行执行的,所以输出可能是掺杂到一起的

# include<stdio.h>
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);
        }
}
/*
fork表示开启一个子进程,从代码的此处开始执行
区别父子进程是通过fork的返回值
父进程返回子进程的PID 子进程返回0
*/

2、wait( ) 等待子进程运行结束。如果子进程没有完成,父进程一直等待。

调用格式: int wait(status) int *status;

其中,status 是用户空间的地址。

它的低 8 位反应子进程状态,为 0 表示子进程正常结束,非 0 则表示出现了各种各样的问题;

高 8 位则带回了 exit( )的返回值。exit( )返回值由系统给出。

3、exit( )

终止进程的执行。

系统调用格式: void exit(status) int status;

其中,status 是返回给父进程的一个整数,以备查考。

为了及时回收进程所占用的资源并减少 父进程的干预,UNIX/LINUX 利用 exit( )来实现进程的自我终止

通常父进程在创建子进程时,应 在进程的末尾安排一条 exit( ),使子进程自我终止。

exit(0)表示进程正常终止,exit(1)表示进 程运行有错,异常终止。

如果调用进程在执行 exit( )时,其父进程正在等待它的终止,则父进程可立即得到其返回的 整数。核心须为 exit( )完成以下操作: (1)关闭软中断 (2)回收资源 (3)写记帐信息 (4)置进程为“僵死状态” 

 

操作系统-进程控制

标签:lin   区别   操作系统   lse   关闭   bsp   void   stdio.h   一个   

原文地址:https://www.cnblogs.com/shensobaolibin/p/10066886.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!