linux的waitpid 和wait 以及fg 和bg命令
2014-03-08 11:43
295 查看
接上篇:linux
的nohup & 和daemon 总结, 这里总结下waitpid和bg 和fg命令
#include<sys/wait.h>
定义函数 pid_twaitpid(pid_t pid,int * status,int options);
其他数值意义如下:
pid<-1 等待进程组识别码为
pid 绝对值的任何子进程。
pid=-1 等待任何子进程,相当于 wait()。
pid=0 等待进程组识别码与目前进程相同的任何子进程。
pid>0 等待任何子进程识别码为 pid的子进程。
进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。
wait是基于waitpid来实现的:
static inline pid_t wait(int *wait_stat)
{
return waitpid(-1,wait_stat,0);
}
而根据个人理解,其实现的原理就是用到了waitpid和信号逻辑。当用户按下CTRL-Z时,向前台进程组发送SIGTSTP信号以暂停进程(默认动作),该信号可以被忽略和重定义。
(注SIGTSTP和SIGSTOP的唯一区别:将进程暂停是SIGTSTP的默认action,用户可以自定义一其handler,而将进程暂停是SIGSTOP的定死的action,用户不能修改。此外,二者没什么差别,都使用SIGCONT来讲进程重新激活。) 而bg和fg就可以通过触发SIGCONT信号来是的进程继续运行。至于是前台还是后台,则是shell的主进程是否要对子进程执行waitpid 来决定了。
的nohup & 和daemon 总结, 这里总结下waitpid和bg 和fg命令
waitpid函数说明:
#include<sys/types.h>#include<sys/wait.h>
定义函数 pid_twaitpid(pid_t pid,int * status,int options);
其他数值意义如下:
pid<-1 等待进程组识别码为
pid 绝对值的任何子进程。
pid=-1 等待任何子进程,相当于 wait()。
pid=0 等待进程组识别码与目前进程相同的任何子进程。
pid>0 等待任何子进程识别码为 pid的子进程。
wait函数说明:
#include <sys/types.h> #include <sys/wait.h> pid_t wait(int *status) |
wait是基于waitpid来实现的:
static inline pid_t wait(int *wait_stat)
{
return waitpid(-1,wait_stat,0);
}
fg 和bg
前面介绍了两个函数,而在linux中shell中运行程序的时候,我们可以通过键盘crtl + z 组合键来暂停一个作业。并可以用bg将其在后台继续运行,或者用fg将其恢复前台运行。而根据个人理解,其实现的原理就是用到了waitpid和信号逻辑。当用户按下CTRL-Z时,向前台进程组发送SIGTSTP信号以暂停进程(默认动作),该信号可以被忽略和重定义。
(注SIGTSTP和SIGSTOP的唯一区别:将进程暂停是SIGTSTP的默认action,用户可以自定义一其handler,而将进程暂停是SIGSTOP的定死的action,用户不能修改。此外,二者没什么差别,都使用SIGCONT来讲进程重新激活。) 而bg和fg就可以通过触发SIGCONT信号来是的进程继续运行。至于是前台还是后台,则是shell的主进程是否要对子进程执行waitpid 来决定了。
相关文章推荐
- 运维入门
- 动态清空 nohup 输出文件
- install scrapy with pip and easy_install
- Linux Shell常用技巧
- BGP邻居协商过程
- BGP边界网关协议
- shell字符串操作详解
- Shell编程的一些知识集合
- linux Shell学习笔记第五天
- Perl 获取shell命令的执行结果
- Linux shell操作mysql数据库深入解析
- Linux Shell简介
- 深入多线程之:Wait与Pulse的使用详解
- linux shell awk获得外部变量(变量传值)简介
- shell 中数学计算总结
- linux shell 中 2>&1的含义
- shell编程基础 单引号和双引号的区别
- 对Shell 脚本加密的方法
- shell脚本学习指南[二](Arnold Robbins & Nelson H.F. Beebe著)
- shell学习教程获取命令行参数示例