栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

进程的操作

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

进程的操作

进程

进程是一个具有一定独立功能的程序的一次运行活动,同时也是资源分配的最小单元

程序是放到磁盘的可执行文件(静态的 永久的)

进程是指程序执行的实例   (正在执行的 是动态的 暂时的 )

chmod 希尔脚本本身没有执行权限 需要通过chmod添加可执行权限

文件可以迁移,但是进程不能迁移

进程的组成包括程序 数据 以及 PCB(进程控制块 即进程状态信息)

通过调用一个进程可以调用多个程序

每个进程都有生命周期

创建  运行  撤销

ps 查看进程

-e

-o

pid

ppid

用户进程

初始化进程 PID为1身份是用户进程 并且是所有进程的父进程

PID为0是系统进程

所有进程都是由父进程产生

pstree  进程树

任何一个进程都会经历僵尸进程这一个阶段

僵尸进程的产生和危害以及如何消除

父进程结束子进程没结束子进程会成为孤儿进程(无危害)

解决:找个继父 即初始化进程

守护进程 精灵进程

进程与进程之间是相互独立的 每个进程都是一个独立的运行单位,拥有各自的权利和责任

堆区可以扩展

进程ID(PID)标识进程的唯一数字

父进程的ID(PPID)

启动进程的用户ID(UID)

getpid()

getppid()

GID

eUID

进程互斥是指当有若干进程都要使用某一共享资源时,任何时刻最多允许一个进程使用

其他要使用该资源的进程必须等待,直到占用该资源者释放了该资源为止(排他)

临界资源

操作系统中将一次只允许一个进程访问的资源称为临界资源

临界资源肯定是共享资源,

访问临界区的那段程序代码称为临界区

同步

一组并发进程按照一定顺序执行的过程就称为进程同步

有同步关系的进程就称为合作进程

合作进程互相发送的信号称为消息或事件

进程调度

抢占式  非抢占式

#include

pid_t fork(void)

功能:创建子进程(父子进程创建完运行顺序随机)

fork 他被调用一次,会返回两次,并可能有三种不同的返回值

两次返回原因调用fork之后有两个进程,父子进程都需要返回

复制  共享

子进程复制了父进程的变量

返回-1 即创建失败

返回给父进程的是子进程ID

返回给子进程的是 0 (表示子进程没有下一级,即没有子进程)

pid_t pid = vfork()创建子进程  

vfork 不会继承父进程的空间变量 当需要使用空间变量时与父进程共享(子进程先运行父进程后运行)

exit(0)结束进程

子进程vfork不一定是在子进程运行完才运行 但一定是子进程先运行

调用fork函数后,子进程和父进程的执行次序不确定,而调用vfork后,保证子进程会先运行,但是在调用exec或exit前会在父进程的空间中运行,在子进程调用exec或exit之后父进程才可能被调度运行,当子进程调用这两个函数中的任意一个时,父进程会恢复运行。

exec

区别:fork创建一个新的进程,产生一个新的PID

exec启动一个新程序,替换原有的进程,因此进程的PID不会改变

exec函数族  ——execvp

 

L:参数以列表的形式提供

V:参数以数组(向量)的方式提供

E:为新进程提供新的环境变量

P:在用户的绝对路径path下查找可执行文件,该文件必须在用户路径下,可以只指定程序文件名

system(const char * string)

功能:

调用fork产生子进程,由子进程来调用/bin/sh -c string 来执行参数string所代表的命令

进程等待

#include

#include

pid_t wait(int * status)

功能:

阻塞该进程,直到其某个子进程退出

wait出错(当没有子进程但调用了)

等的其实是第一个结束的子进程(某个表示的是不确定是哪个进程是第一个结束)

pid_t waitpid(pit_t  pid,int * sataus,int options)//可以指定等哪一个子进程

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/751289.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号