进程的替换和信号

进程的替换和信号

1.什么是进程替换

把当前进程替换为其他进程执行。其他进程(创建新程序,生成可执行程序,装载进内存)

pcb不变,进程实体替换

2.进程替换的函数

头文件<unistd.h>

l->把参数列举出来

v->把参数封装到数组里

2.1 execl

用法:execl(“命令的路径”,“命令的参数”,(char*)NULL);

注:(char*)NULL和(char*)0都为结束符。

代码:

运行结果:
在这里插入图片描述
我将原始的main进程替换为查看进程的ps进程。

小补充:

函数perror():可以告诉错误原因

2.2 execlp

自动匹配系统路径,不需要指定路径,只需要传递文件名。

用法:execlp(“命令名”,“参数”,(char*)0);

用户自定义路径复制到$PATH路径下:

export 变量名=值

ex:export PATH=$PATH:.

2.3 execle

用法:execle(“/usr/bin/pwd”,“pwd”,(char*)0,envp) envp是main函数的形参

2.4 execv

将命令的参数封装到数组中

用法:char*buff[]={“ps”,“-f”,“0”}; execv(“usr/bin/ps”,buff);

2.5 execvp

自动匹配系统路径,不需要指定路径,只需要传递文件名

2.6 execve(系统调用函数)

用法:execve(“/usr/bin/ps”,buff,envp);

3.信号

3.1 概念

信号是系统相应某个条件而产生的事件,进程接收到信号会执行相应的操作。

头文件:<signal.h>

3.2 各种信号

3.2.1 SIGINT 2

终止

键盘按下Ctrl+c时会产生该信号

3.2.2 SIGKILL 9

强制终止进程

该信号的响应方式不允许改变

3.2.3 SIGPIPE 13

读端关闭的描述符,写端写入时产生,该信号会终止程序

3.2.4 SIGTERM 15

系统kill命令默认发送的信号

3.2.5 SIGCHLD 17

子进程结束后,会默认给父进程发送该信号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值