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

linux 进程操作

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

linux 进程操作

进程包含创建进程,等待进程,进程标识符,进程退出

创建进程 :fork()函数创建进程,使用成功后fork返回两次,返回值为0的时候是子进程,返回值大于0是父进程,返回值大于0的时候返回值等于子进程的pid号,调用失败返回-1。

用getpid();获取当前进程的id号,getppid()获取父进程的进程id。

如果A进程创建了B进程,那么A是B的父进程,B是A的子进程。

pid=0:称为交换进程  作用 进程调度。 pid=1 : init进程 作用系统初始化。

fork创建进程之后代码段子夫共享,就是把父进程的代码拷贝一份给子进程。如果改动数据子父数据不一样,fork以后父进程和子进程争抢运行。

vfork也可以创建进程和fork的区别是:

vfork直接使用父进程的储存空间,不拷贝。

vfork保证子进程先运行,当子进程调用函数退出以后,父进程才运行。

进程退出分为异常退出和正常退出

正常退出是调用函数 return exit 等属于正常退出。

异常退出调用abort或当进程收到某些信号是如ctrl+c进程异常退出。

等待进程

需要注意 子进程退出状态不被收集,会变成僵尸进程,父进程等待子进程退出并收集子进程退出状态。

等待进程函数 pit_t wait(int *status); status是需要传递的参数 。非空:子进程退出状态放到他所指定的地址空间。 空:不关心退出状态。

收集退出状态宏 WEXITSTATUS(&status);wait();返回一个状态码,解析状态码用宏解析。

进程终止会执行一段内核代码,等待子进程退出,并收集退出状态。

如果用wait()子进程正常运行父进程阻塞,如果子进程运行完毕,父进程等待子进程并获取退出状态。

waitpid和wait区别wait会让父进程阻塞,waitpid有一个选项,可以使调用者不阻塞。

孤儿进程就是父进程不等待子进程提前运行结束,此时子进程叫做孤儿进程。linux避免系统存在过多的孤儿进程,init进程收留孤儿进程,变成孤儿进程的父进程。

exec族函数包括 execl,execlp,execle,execv,execvp,execvpe.

exec族函数作用 : 在调用进程内部执行一个可执行文件。调用成功不反悔调用失败返回-1.

#include
extern char **environ;

int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg,..., char * const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execvpe(const char *file, char *const argv[],char *const envp[]);
参数说明:
path:可执行文件的路径名字
arg:可执行程序所带的参数,第一个参数为可执行文件名字,没有带路径且arg必须以NULL结束
file:如果参数file中包含/,则就将其视为路径名,否则就按 PATH环境变量,在它所指定的各目录中搜寻可执行文件。

exec族函数参数极难记忆和分辨,函数名中的字符会给我们一些帮助:
l : 使用参数列表
p:使用文件名,并从PATH环境进行寻找可执行文件
v:应先构造一个指向各参数的指针数组,然后将该数组的地址作为这些函数的参数。
e:多了envp[]数组,使用新的环境变量代替调用进程的环境变量
$PATH环境变量,在它所指定的目录搜索可执行文件。

errno来解析错误代码。用perror函数来解析错误函数。

exec族函数执行成功该进程会被替换为新进程。

system与exec族函数区别system执行成功还会返回原始代码exec不会。

system(直接传参);

popen和system区别:可以获取运行的输出结果,可以存放可以写入。

popen(“直接传参”,“操作方式 read/write”);

返回值成功返回一个读或者写打开文件的指针,如果失败返回NULL。

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

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

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