进程的基础

文章介绍了Unix/Linux系统中管理进程的一些基本命令,如使用&将命令放入后台执行,jobs查看后台任务,fg和bg在前台和后台之间切换进程,以及ps和kill用于进程监控和终止。还讨论了进程的不同状态,如运行态、等待态、停止态和僵尸态,并提到了nice和renice命令来调整进程的优先级。此外,文章还讲解了fork函数创建子进程和exec函数族用于在当前进程中执行新程序的概念。
摘要由CSDN通过智能技术生成

DAY 1

1.程序

命令含义

&这个用在一个命令的最后,可以把这个命令放到后台执行

jobs查看当前有多少在后台运行的命令

jobs -l显示PID,比jobs更好用

fg将后台中的命令调至前台继续运行,如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

bg将一个在后台暂停的命令,变成继续执行,如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

ps列出系统中正在运行的进程,会显示PID

kill pid发送信号给一个或多个进程(经常用来杀死一个进程)

kill -stop pid暂停PID为pid的任务

history查看当前用户的历史命令

进程的状态:

1. 运行态

1. 运行态:进程拥有cpu正在运行

2. 就绪态:当进程时间片到,重新回到准备运行状态

2. 等待态

1. 可中断:资源到则可以重回运行态

2. 不可中断:资源到不一定回到运行态,需要等待特

定条件触发

3. 停止态

1. 进程暂停在后台,可以键入‘ctrl+z’使得进程进入停

止态

4. 僵尸态

1. 进程结束,但是此时系统资源还未被回收干净

5. 死亡态

1. 进程完全消亡,一般看不到死亡态的进程

进程的调度相关指令

1. ps:

ps -aux:查看进程的详细信息

stat:进程状态大写s:等待态

小写s:拥有子进程的进程

大写的i:闲置在内核的进程

N:优先级较低的

<:优先级较高的

小写的L:有子线程的进程

+:运行在前台的进程

R:运行态

T:停止态

Z:僵尸态

2. top:动态查看进程的信息

NI:优先级号

s:状态信息

3. nice:按照用户指定优先级运行进程

nice + -n + 优先级 + 运行程序

例如:将a.out可执行程序按照5优先级运行

nice -n 优先级号 ./a.out

注意:

优先级编号:-20~19

-20是最高优先级

19是最低优先级4. renice:按照用户指定优先级改变正在运行的进程的

优先级

renice + -n + 优先级 + 进程id

例如:将a.out的优先级改变,前提条件a.out的pid为

10000

renice -n 10 10000

4. renice:按照用户指定优先级改变正在运行的进程的

优先级

renice + -n + 优先级 + 进程id

例如:将a.out的优先级改变,前提条件a.out的pid为

10000

renice -n 10 10000

注意:

重设的优先级一般只能由高改到低

如果需要从低优先级改为高优先级需要使用管理员

权限

5. kill:向指定进程发送信号

kill -l:查看所有的信号

kill + -信号编号 + 进程id

例如:杀死进程

kill -9 进程id -----> 向指定进程id的进程发送9号信

号,9号信号处理方式为结束进程

例如:暂停进程

kill -19 进程id -----> 向指定进程id的进程发送19号

信号,19号信号处理方式为将进程暂停在后台,使得

进程进入停止态

6. bg:将后台挂起的进程放在后台运行

bg + 任务号bg + % + 进程id

例如:./a.out运行后用ctrl+z暂停在后台,此时a.out

的任务号为1

bg 1

将a.out提到后台运行

7. fg:将后台运行的进程放到前台运行

fg + 任务号

fg + % + 进程id

fork函数:

函数功能:创建子进程

函数使用需要添加的头文件

#include

<sys/types.h>

#include <unistd.h>

函数原型

pid_t fork(void);

函数参数说明

该函数不需要指定参数

函数返回值说明

成功:创建一个子进程

将子进程的id号返回到父进程中

将0返回到子进程中

失败:返回-1,到父进程中,并且没有子进程创建

获取当前进程的进程id号:getpid();

获取当前进程的父进程id号:getppid();

注意:

父进程和子进程的关系:

1. 子进程会拷贝父进程几乎所有内容,子进程会拥有属

于自己的PCB

2. 父子进程运行的区别

1. 父进程从main函数开始运行

2. 从fork函数之后开始运行

3.父进程和子进程都参与cpu的统一调度

4.一般而言子进程结束都将由父进程回收子进程产生的

资源

5.如果父进程先于子进程结束,子进程变为孤儿进程,

将会被init进程收养,后续如果子进程结束,将由init进

程回收子进程产生的资源

exec函数族

功能:将当前进程的空间替换为另一个进程,以此实现

在当前进程中执行另外的进程。

区别:

l:以列表的形式展现传递给可执行文件的参数

v:以容器的形式传递给可执行文件的参数,即将参数

构造为一个指针数组

p:使用系统的环境变量

e:使用自己传递的环境变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值