linux 查当前pid_linux进程控制

相关概念:

程序:编译好的二进制文件,存放在磁盘上(占用的是物理内存空间),不占用系统资源(cpu,内存,打开的文件,设备,锁)

进程:抽象的概念,与操作系统原理联系紧密,是活跃的程序,占用系统资源,在内存中执行。

由原来的弹道程序涉及转换成多道程序设计,是CPU分成若干的时间碎片,各个进程抢占资源去执行,虽然程序有优先级高低,但是只是抢占到的几率高;即使是多核,也是需要时才开启其他核。

处理速度:

寄存器--cache--内存--硬盘--网络--存储介质

其他概念:串行和并发,CPU和MMU

进程控制块:PCB在usr/src/linux-headers/include/linux/sched.h文件中可以查看struct task_struct结构定义,包含部分定义,进程id,进程状态,进程切换时需要保存和恢复的CPU寄存器,描述虚拟的地址空间信息,当前工作目录,文件描述符表,用户id和组id,绘画和进程组,资源上限,umask掩码

进程状态

初始态(创建时,非常短暂),就绪态(有执行资格,但是没有执行权限,需要抢占资源),,运行态(正在执行),挂起态(没有执行资格和执行权限),终止态

687ac39e1e312f9116231ad97407a43d.png

进程控制

程序默认的是单进程的; 下面介绍多进程的使用

创建进程函数: pid_t fork(void);(查看 Linux下使用命令:man 2 fork)

f9b251b53b189178c4ba2c10a5b740bd.png

返回值: 失败返回-1, 父进程返回子进程ID, 子进程返回0

查看当前进程 ps aux | grep "要查找的程序"; ps ajx

aa735d95cdc77a44b29f0337b6d40eb3.png

刚fork完成时(父子进程之间) 1. 0-3G地址空间相同 2. PCB相同, 但是pid除外 3.其他内容由mmu映射到物理内存上, 读时共享, 写时复制获取pid 和 ppid 对应的函数是getpid(); getppid();

//wait 函数回收子进程#include #include #include int main() { pid_t pid; pid = fork();  if(pid == -1) { perror("fork error"); exit(-1); } else if(pid > 0) { printf("parent process"); } else if(pid == 0) { printf("child process"); } printf("mul process"); return 0;}

回收进程

进程有孤儿进程, 僵尸进程

  1. 孤儿进程 : 子进程活着, 父进程死了, linxu中的init进程会领养孤儿
  2. 僵尸进程 : 子进程死了, 父进程正在忙, 没有去回收子进程
  3. 进程回收 : 代码附在下边

wait - 阻塞函数

pid_t wait(int* status);

调用一次回收一个子进程资源

返回值:

0: 回收的子进程的pid;

-1: 没有子进程可以回收了;

status -- 传出参数

获取退出时候的返回值

waitpid -- pid_t waitpid(pid_t pid, int *status, int options);

(可以设置非阻塞, 提高wait的效率)

pid: -1: 所有的子进程

0: 当前进程组的子进程

0(pid): 回收指定进程的pcb

-pid: 回收不在当前进程组的子进程

opttions: 阻塞: 0

非阻塞: WNOHANG 可以设置为非阻塞

可以有针对性的回收某一个子进程资源 ;需要注意的是即使是非阻塞, 也需要循环来回收子进程

//wait函数回收子进程#include #include #include #include #include #include #include int counter = 100;int main(int argc, const char* argv[]){ int number = 5; int i; pid_t pid; for(i=0; i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值