Linux学习:进程管理

内容简介

在Linux下的进程管理。包括创建进程、查看进程、杀死进程。

创建进程

创建新进程主要是使用fork()函数,其主要特性如下:

  • fork创建一个进程时,子进程只是完全复制父进程的资源,复制出来的子进程有自己的task_struct结构和pid,但却复制父进程其它所有的资源。

  • 现在Linux中是采取了copy-on-write(COW写时复制)技术,为了降低开销,fork最初并不会真的产生两个不同的拷贝,因为在那个时候,大量的数据其实完全是一样的。写时复制是在推迟真正的数据拷贝。若后来确实发生了写入,那意味着parent和child的数据不一致了,于是产生复制动作,每个进程拿到属于自己的那一份,这样就可以降低系统调用的开销。

  • fork()调用执行一次返回两个值,对于父进程,fork函数返回子程序的进程号,而对于子程序,fork函数则返回零,这就是一个函数返回两次的本质。

  • 在父进程中,fork返回新创建子进程的进程ID;

  • 在子进程中,fork返回0;

  • 如果出现错误,fork返回一个负值;

创建新进程的代码如下:
在这里插入图片描述

图1:创建新进程的代码

我的程序名称为test,所以fork之后会有两个test.我们调用进程显示来查看当前是否有两个进程:
在这里插入图片描述

图2:fork() 2个test

查看运行的进程

  • 显示所有运行中的进程:ps aux | less
  • 查看系统中的每个进程:ps -A
  • 查看非root运行的进程:ps -U root -u root -N
  • 查看用户budding运行的进程:ps -u budding
  • 查看运行中系统的动态实时视图:top
  • 显示进程树

显示所有运行中的进程:ps aux | less
在这里插入图片描述

图3:ps aux | less

ps- A 可以列出所有进程:
在这里插入图片描述

图4: 列出所有进程

ps -u user 可以显示当前用户进程
在这里插入图片描述

图5:显示当前所有用户进程

ps - U root -u root -N 查看非root运行的进程
在这里插入图片描述

图6:查看非root运行的进程

查看运行中系统的动态实时视图:top
在这里插入图片描述

图7:查看运行中系统的动态实时视图

显示所有运行中的进程:ps aux | less
在这里插入图片描述

图8:显示所有运行中的进程

查找某个进程的显示

使用的命令:pgrep firefox 返回进程ID
在这里插入图片描述

图9 查找某个进程的显示

注:Markmyword: 是当前在运行的一个笔记软件。用于markdown的书写。

显示进程树:pstree
在这里插入图片描述

图10:打印进程树

换出某个进程

有6种以exec开头的替换函数,统称为exec函数。

#include<unistd.h>
int execl(const char* path,const char* arg,...); //后面以NULL结束 
int execlp(const char* file,const char* arg,...);
int execle(const char* path,const char* grg,...,char* const envp[]); 
int execv(const char* path,const char* argv); //argv数组也要以NULL结束 
int execvp(const char* file,const char* argv);
int execve(const char* path,const char* argv,char* const envp[]); //envp数组也是NULL结束
//事实上,只有execve是系统调用,其它函数都调用了execve 

在这里插入图片描述

图11:进程替换

注:该终端不支持中文,固只使用在了部分实验中使用到了此终端,在后期的实验均采用支持中文输出的终端(原生终端)。

杀死某个进程

杀死进程主要是用kill + 进程号 命令。
使用kill命令kill test 进程:
在这里插入图片描述

图12:kill test进程

Test进程是不断显示hello world,在突然被kill之后其显示如下:
在这里插入图片描述

图13:程序显示

再次列出当前运行的进程,可以看到test已经消失。
在这里插入图片描述

图14:再次打印当前所有进程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值