当前位置: 首页 > news >正文

操作系统-进程控制

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)置进程为“僵死状态” 

 

转载于:https://www.cnblogs.com/shensobaolibin/p/10066886.html

相关文章:

  • 区块链在刚刚领域引起行业革新
  • pages bookmarks for machine learning domain
  • 2019年值得关注的八大DevOps趋势
  • JS 日期转换,格式化等常用的函数定义
  • AlphaZero进化论:从零开始,制霸所有棋类游戏
  • 一个程序员的自白(危机可导)
  • golang 学习笔记 ---数组/字符串/切片
  • 整数规划---割平面解法
  • 试水Proxmox最新版本PVE 5.3
  • javascript事件循环(浏览器/node)
  • http请求后台报406错误
  • 想写好前端,先练好内功
  • 关于在ViewPager的子页面中不能跳转的问题
  • 企业上云计划:上云前应该考虑哪些因素
  • 20181213交换分区管理 Swap
  • css系列之关于字体的事
  • Cumulo 的 ClojureScript 模块已经成型
  • eclipse的离线汉化
  • Git学习与使用心得(1)—— 初始化
  • iOS 系统授权开发
  • Nacos系列:Nacos的Java SDK使用
  • Redis 中的布隆过滤器
  • vue-router 实现分析
  • 简单数学运算程序(不定期更新)
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 跨域
  • 面试遇到的一些题
  • 前端代码风格自动化系列(二)之Commitlint
  • 入门级的git使用指北
  • 协程
  • 在electron中实现跨域请求,无需更改服务器端设置
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • UI设计初学者应该如何入门?
  • 函数计算新功能-----支持C#函数
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • 如何正确理解,内页权重高于首页?
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • (2)(2.10) LTM telemetry
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .Net core 6.0 升8.0
  • .NET Core中Emit的使用
  • .netcore 获取appsettings
  • .NetCore 如何动态路由
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • /etc/skel 目录作用
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • @RequestMapping处理请求异常
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [20180224]expdp query 写法问题.txt
  • [4.9福建四校联考]
  • [Angular] 笔记 21:@ViewChild