北风网 linux,linux进程控制笔记北风网分享.doc
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相关推荐
- 【Linux】进程控制(创建、终止、等待)
环境:centos7.6,腾讯云服务器 Linux文章都放在了专栏:[Linux]欢迎支持订阅 相关文章推荐: [Linux]冯.诺依曼体系结构与操作系统 [Linux]进程理解与学习Ⅰ-进程概念 [ ...
- Linux:进程控制
这篇博客是我看<linux环境编程+从应用到内核>这本书中的知识点总结,若读者有看不懂的地方,可以参考书籍中的具体内容. 1,进程ID的分配 每个进程都会有自己的父进程,父进程又会有自己的 ...
- 【Linux】进程控制(进程创建、进程终止、进程等待、进程替换)
文章目录 一.进程创建 1.1 系统调用 fork 1.2 理解 fork 的返回值 1.3 写时拷贝策略 二.进程终止 2.1 main 函数的返回值 2.2 进程退出的几种情况 2.3 进程退出码 ...
- 【Linux】进程控制1-进程创建、进程终止
文章目录 进程创建 fork函数 用户空间.内核空间 写实拷贝 fork创建子进程时的一些特性 守护进程 进程终止 正常终止 异常终止 exit和_exit的区别 缓冲方式 进程创建 fork函数 调 ...
- 【Linux】进程控制 —— 进程创建/终止/等待
目录 一.进程创建 1.fork创建子进程,操作系统做了什么? 2.fork的用法以及失败的原因 二.进程终止 1.三种退出情况 2.main函数为什么一般情况下都要return 0 3.进程的退出码 ...
- 【Linux】进程控制2-进程等待
文章目录 进程等待 进程等待的必要性 wait函数 waitpid函数 进程等待 进程等待的必要性 我们之前提到过僵尸进程,僵尸进程就是子进程先于父进程退出,子进程的退出状态信息发送给父进程但是父进程 ...
- 【Linux】进程控制(exec函数族)的理解和使用
文章目录 1. 进程程序替换是什么 2. 进程替换函数--exec族 3. execl函数的使用 4. execv函数的使用 5. execlp函数的使用 6. execvp函数的使用 7. 验证ex ...
- 【Linux】进程控制 — 进程终止 + 进程等待
文章目录
- 《嵌入式linux应用程序开发标准教程》笔记——7.进程控制开发
进程是系统资源的最小单元,很重要. 7.1 linux进程的基本概念 定义:一个程序的一次执行过程,同时也是资源分配的最小单元.程序是静态的,而进程是动态的. 进程控制块:linux系统用进程控制块描 ...
最新文章
- 微软低调发布 Web 版本的 Visual Studio Code 预览
- redis配置密码_Redis数据库概述
- Facebook API使用经验分享
- python函数可以作为容器对象吗_正确理解Python函数是第一类对象
- Linux修改文件/文件夹权限
- ~~Bellman-Ford算法
- PHP printf()函数格式化使用详解
- 公元2011年6月20日,我在博客园安家了,大家祝贺吧!
- c# list转为json_C#中List集合转换JSON
- 对比Cnblogs.com、CSDN.net和Javaeye.com的人气
- cad完全卸载教程_卸载后 如何彻底删除CAD2010?
- 基于服务的多源异构数据整合平台解决方案
- 金蝶eas怎么引出凭证_如何引出会计分录序时簿?
- 如何申请注册微软邮箱(支持海外apple ID注册)亲测
- r语言实现岭回归_R语言回归篇
- combo是什么意思啊(combo卡是什么意思)
- GCB:农田土壤丰富真菌比稀有真菌适应更广(一作解读+主图重现)
- Fenix:Mozilla推出的新型移动浏览器
- java使用poi给excel文件插入数据
- 【虚幻引擎UE】UE4/UE5 通用插件推荐及使用介绍
热门文章
- linux版本高斯安装,RedHat Linux系统Gaussian高斯的安装与出错信息
- 算法---设计推特(Kotlin)
- java判断一个字符串是否为数字型(整数、小数、负数)
- 服务器负载均衡是什么?有什么用?
- vue实现简单购物车功能
- iis7 php 5.4,laravel 5.4如何在iis 7环境中安装
- Java不重复的随机数获取_java获取 1--N 的不重复随机数程序代码
- ocsp java_OpenSSL 通过OCSP手动验证证书
- r语言平均值显著性检验_最全的R语言统计检验方法_数据挖掘中R语言的运用
- 【Linux】shell脚本基础-变量