UINX标准C - 进程管理
进程与程序的关系:
1.程序就是存储在磁盘上可执行的二进制文件,
2.进程是一个正在执行的的程序,不过一个程序可能存在多个进程实例。
查看进程中的pid和获取pid(进程号)
1.终端指令:ps aux 查看所有的正在进行的进程,显示出用户名,进程号,cup占用比,内存占用比等
2.终端指令:ps aux | grep pid 可过滤其他的无关的pid,可以直接查看目标pid
3.标准c: getpid()查看当前进程的pid getppid()查看父进程的pid
子进程的创建(当前进程中创建子进程)
1.fork():pid_t fork(void);
a.创建出子进程,程序开始时,子进程将父进程中的全局段,静态数据段,堆,栈,IO缓冲区中的数据都拷贝一份,并且会共享代码段。
b.此函数如果创建成功会返回两个值(0和子进程的pid),这两个值没有先后顺序。如果创建失败则会返回-1。
2.vfork()和exec联合才能使用:pid_t vfork(void); int exec(const char* path,const char *arg...) 实例 exec(“路径”,“a.out”,NULL);
a.vfork()创建出子进程,不过程序开始时,子进程之间不会拷贝父进程中全局段,静态数据段,堆,栈,IO缓冲区中的数据不会拷贝,也不会贡献代码段,此函数执行是有先后顺序的,子进程如果还未结束,父进程就不会执行。
b.exec()通过此函数创建的子进程会替换掉父进程给的代码段,此函数不是重新创建一个新的pid,而是加载一个可执行文件。
进程的退出和异常终止
1.退出:
a.return函数 b.系统函数_exit(stat)和标准C函数_Exit c.标准exit调用_exit/_Exit d.最后一个线程结束,直接退出
2.异常终止:
a.通过函数abort() b.程序运行时,通过一些键位来取消操作 c.线程中取消运行
进程的回收
1.wait: pid_t wait(int* status)
a.等待指定的子进程结束,父进程进行会收,status是子进程结束后的返回值。
b.所有子进程在进行时,父进程会阻塞。
2.waitpid:pid_t waitpid(pid_t pid,int* status,int option)
UINX标准C - 进程管理的更多相关文章
- python 标准类库-并行执行之subprocess-子进程管理
标准类库-并行执行之subprocess-子进程管理 by:授客QQ:1033553122 1.使用subprocess模块 以下函数是调用子进程的推荐方法,所有使用场景它们都能处理.也可用Popen ...
- Linux进程管理
一.进程管理简介 进程是正在执行的程序或命令,每一个进程都是一个运行实体,都有自己的地址空间,并占用一定的系统资源. 进程管理的作用: 1.判断服务器的健康状态 2.查看系统中的所有进程 3.杀死进程 ...
- linux设备驱动归纳总结(四):1.进程管理的相关概念【转】
本文转载自;http://blog.chinaunix.net/uid-25014876-id-64866.html linux设备驱动归纳总结(四):1.进程管理的相关概念 xxxxxxxxxxxx ...
- boost:进程管理
概述 Boost.Process提供了一个灵活的C++ 进程管理框架.它允许C++ developer可以像Java和.Net程序developer那样管理进程.它还提供了管理当前执行进程上下文.创建 ...
- Linux内核学习笔记-2.进程管理
原创文章,转载请注明:Linux内核学习笔记-2.进程管理) By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...
- UNIX环境高级编程——进程管理和通信(总结)
进程管理与通信 进程的管理 进程和程序的区别: 进程: 程序的一次执行过程 动态过程,进程的状态属性会发生变化 程序:存放在磁盘上的指令.数据的有序集合 是个文件,可直观看到 程序program ...
- Linux内核——进程管理与调度
进程的管理与调度 进程管理 进程描写叙述符及任务结构 进程存放在叫做任务队列(tasklist)的双向循环链表中.链表中的每一项包括一个详细进程的全部信息,类型为task_struct,称为进程描写叙 ...
- Linux内核分析(四)----进程管理|网络子系统|虚拟文件系统|驱动简介
原文:Linux内核分析(四)----进程管理|网络子系统|虚拟文件系统|驱动简介 Linux内核分析(四) 两天没有更新了,上次博文我们分析了linux的内存管理子系统,本来我不想对接下来的进程管理 ...
- Linux进程管理详解
何谓进程?进程,就是正在执行的一个程序或命令,每一个进程都是一个运行实体,有自己的地址空间,并占用一定的系统资源.简而言之,进程就是运行中的程序.在Linux中,诸如ls等命令都是进程,只不过某些命令 ...
随机推荐
- Vue-cli 鼠标监听事件之滚动条
<template> <div class="scroll"> <div class="scroll-div-outer&quo ...
- python小游戏2
import hashlib 过段时间会来解释下hashlib的源码(能力有限请大家谅解)#根据md5模块来加密密码 def pwd_md5(pwd): ''' 加密用户输入过来的密码 :param ...
- Akka系列(九):Akka分布式之Akka Remote
前言.... Akka作为一个天生用于构建分布式应用的工具,当然提供了用于分布式组件即Akka Remote,那么我们就来看看如何用Akka Remote以及Akka Serialization来构建 ...
- 为应用创建多个独立python运行环境
在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4.所有第三方的包都会被pip安装到Python3的site-packages目录下. 如果我们要同时开发多个应用程序,那这 ...
- spring boot-10.国际化
1.在原来spring MVC 中国际化实现步骤 (1)编写国际化配置文件 (2)使用ResourceBundleMessageSource管理国际化资源文件 (3)在页面中取国际化信息 2.spri ...
- Linux普通用户无法使用sudo
问题描述: jenkins执行发布脚本,因为使用的是jenkins用户,所以有些shell命令需要 sudo 来执行,导致报错. + sudo rm -rf /usr/share/nginx/html ...
- IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(Application.StartupPath + "\\temp", 0); 报:异常来自 HRESULT:0x80040228
原因:未添加License. 解决办法:在窗体中添加LicenseControl即可.如下图,License图标运行时不会显示.
- 18.AutoMapper 之条件映射(Conditional Mapping)
https://www.jianshu.com/p/8ed758ed3c63 条件映射(Conditional Mapping) AutoMapper 允许你给属性添加条件,只有在条件成立的情况下该成 ...
- python 3 :list
2 List List中支持混合类型 number_list=[1,2,3,4,5] str_list = ["a","b","c",&qu ...
- Flask开发系列之快速入门
Flask开发系列之快速入门 文档 一个最小的应用 调试模式 路由 变量规则 构造 URL HTTP 方法 静态文件 模板渲染 访问请求数据 环境局部变量 请求对象 文件上传 Cookies 重定向和 ...