linux进程控制笔记北风网分享

linux 进程控制笔记

进程创建

普通函数调用完成后,最多返回 return 一次,但fork/vfork会返回二次,一次返回给父进程,一次返回给子进程

父进程的返回值为子进程的进程ID,子进程的返回值为0

1.pid_t fork void

父子进程共享代码段,fork之后子进程获得父进程数据空间、堆和栈的副本,然后各自独立操作自己的数据,但他们共享文件描述符

2.pid_t vfork void

父子进程共享资源不分家;子进程比父进程先运行,子进程结束后再运行父进程,像普通的函数调用一样

进程同步

1.pid_t wait int *statloc

由父进程调用,阻塞式等待任一子进程结束

2.pid_t waitpid pid_t pid, int *statloc, int options

可以选择等待指定子进程结束,可设置成非阻塞式等待

调用外部程序

1.exec函数家庭

exec函数族不创建新进程,只是用磁盘上的一个新程序替换了当前进程的正文段、数据段、堆和栈段

特别注意的是exec执行成功时不返回 就是不再执行exec下面的语句 ,在载入的程序执行完后就退出了

2.int system char *cmdstring 系统调用

system适合拿来调用系统内置的命令或shell脚本

进程优先级

1.int nice int incr

主动降低使用cpu的频率

2.int getpriority int which, id_t who

获取nice值

3.int setpriority int which, id_t who, int value ;

可以为进程、进程组和特定用户的所有进程设置优先级

进程终止

1.正常终止

从main返回:return 0,关闭io流等资源文件

exit:同return 0

_exit:仅将自身设置成不可运行,由父进程调用wait/waitpid进行资源回收

2.异常终止

abort:因特殊情况主动终止

由一个信号终止:被其它程序kill或运行期间产生错误 越界内存访问/除零等 被系统中止

例子

1.wait/waitpid/fork基本用法

#include

#include

#include

#include

int main pid_t pid; if pid fork 0 perror "fork error" ; return -1; else if pid 0 if system "ls -l" 0 puts "system error" ; _exit -1 ; _exit 0 ; if waitpid pid,NULL,0 ! pid puts "wait error" ; if pid fork 0 perror "fork error" ; return -1; else if pid 0 execlp "date","date", char * 0 ; puts "if execlp goes wrong,you will see me!" ; _exit -1 ; if wait NULL 0 puts "wait error" ; return 0; 2.退出状态

#include

#include

#include

#include

void pr_exit int status if WIFEXITED status printf "normal exit, exit status %d\n",WEXITSTATUS status ; else if WIFSIGNALED status printf "abnormal exit, signal number %d\n",WTERMSIG status ; else if WIFSTOPPED status printf "child stoped, signal number %d\n",WSTOPSIG status ; else printf "unknown exit\n" ; int main pid_t pid; int status;

//_exit if pid fork 0 perror "fork error" ; return -1; else if pid 0 _exit 7 ; if wait &status ! pid perror "wait error" ; return -1; pr_exit status ;

//abort if pid fork 0 perror "fork error" ; return -1; else if pid 0 abort ; if wai

北风网 linux,linux进程控制笔记北风网分享.doc相关推荐

  1. 【Linux】进程控制(创建、终止、等待)

    环境:centos7.6,腾讯云服务器 Linux文章都放在了专栏:[Linux]欢迎支持订阅 相关文章推荐: [Linux]冯.诺依曼体系结构与操作系统 [Linux]进程理解与学习Ⅰ-进程概念 [ ...

  2. Linux:进程控制

    这篇博客是我看<linux环境编程+从应用到内核>这本书中的知识点总结,若读者有看不懂的地方,可以参考书籍中的具体内容. 1,进程ID的分配 每个进程都会有自己的父进程,父进程又会有自己的 ...

  3. 【Linux】进程控制(进程创建、进程终止、进程等待、进程替换)

    文章目录 一.进程创建 1.1 系统调用 fork 1.2 理解 fork 的返回值 1.3 写时拷贝策略 二.进程终止 2.1 main 函数的返回值 2.2 进程退出的几种情况 2.3 进程退出码 ...

  4. 【Linux】进程控制1-进程创建、进程终止

    文章目录 进程创建 fork函数 用户空间.内核空间 写实拷贝 fork创建子进程时的一些特性 守护进程 进程终止 正常终止 异常终止 exit和_exit的区别 缓冲方式 进程创建 fork函数 调 ...

  5. 【Linux】进程控制 —— 进程创建/终止/等待

    目录 一.进程创建 1.fork创建子进程,操作系统做了什么? 2.fork的用法以及失败的原因 二.进程终止 1.三种退出情况 2.main函数为什么一般情况下都要return 0 3.进程的退出码 ...

  6. 【Linux】进程控制2-进程等待

    文章目录 进程等待 进程等待的必要性 wait函数 waitpid函数 进程等待 进程等待的必要性 我们之前提到过僵尸进程,僵尸进程就是子进程先于父进程退出,子进程的退出状态信息发送给父进程但是父进程 ...

  7. 【Linux】进程控制(exec函数族)的理解和使用

    文章目录 1. 进程程序替换是什么 2. 进程替换函数--exec族 3. execl函数的使用 4. execv函数的使用 5. execlp函数的使用 6. execvp函数的使用 7. 验证ex ...

  8. 【Linux】进程控制 — 进程终止 + 进程等待

    文章目录

  9. 《嵌入式linux应用程序开发标准教程》笔记——7.进程控制开发

    进程是系统资源的最小单元,很重要. 7.1 linux进程的基本概念 定义:一个程序的一次执行过程,同时也是资源分配的最小单元.程序是静态的,而进程是动态的. 进程控制块:linux系统用进程控制块描 ...

最新文章

  1. 微软低调发布 Web 版本的 Visual Studio Code 预览
  2. redis配置密码_Redis数据库概述
  3. Facebook API使用经验分享
  4. python函数可以作为容器对象吗_正确理解Python函数是第一类对象
  5. Linux修改文件/文件夹权限
  6. ~~Bellman-Ford算法
  7. PHP printf()函数格式化使用详解
  8. 公元2011年6月20日,我在博客园安家了,大家祝贺吧!
  9. c# list转为json_C#中List集合转换JSON
  10. 对比Cnblogs.com、CSDN.net和Javaeye.com的人气
  11. cad完全卸载教程_卸载后 如何彻底删除CAD2010?
  12. 基于服务的多源异构数据整合平台解决方案
  13. 金蝶eas怎么引出凭证_如何引出会计分录序时簿?
  14. 如何申请注册微软邮箱(支持海外apple ID注册)亲测
  15. r语言实现岭回归_R语言回归篇
  16. combo是什么意思啊(combo卡是什么意思)
  17. GCB:农田土壤丰富真菌比稀有真菌适应更广(一作解读+主图重现)
  18. Fenix:Mozilla推出的新型移动浏览器
  19. java使用poi给excel文件插入数据
  20. 【虚幻引擎UE】UE4/UE5 通用插件推荐及使用介绍

热门文章

  1. linux版本高斯安装,RedHat Linux系统Gaussian高斯的安装与出错信息
  2. 算法---设计推特(Kotlin)
  3. java判断一个字符串是否为数字型(整数、小数、负数)
  4. 服务器负载均衡是什么?有什么用?
  5. vue实现简单购物车功能
  6. iis7 php 5.4,laravel 5.4如何在iis 7环境中安装
  7. Java不重复的随机数获取_java获取 1--N 的不重复随机数程序代码
  8. ocsp java_OpenSSL 通过OCSP手动验证证书
  9. r语言平均值显著性检验_最全的R语言统计检验方法_数据挖掘中R语言的运用
  10. 【Linux】shell脚本基础-变量