Shell主要逻辑源码级分析 (2)——SHELL作业控制
版权声明:本文由李航原创文章,转载请注明出处: 文章原文链接: https://www.qcloud.com/community/article/110 来源:腾云阁 https://www.qcloud.com/community 作业控制本身也是基于进程控制的,两者关系密切,所以SHELL进程控制与作业控制的机制都在本章描述。 一. 主要相关文件 jobs.c jobs.h nojobs.c 备注:其中nojobs.c用于在早期的一些不支持作业控制的操作系统中代替jobs.c编译,其函数接口集是jobs.c的子集,而且现今的主要操作系统都是支持作业控制的,因此并未专门注释nojobs.c文件,而详细注释了jobs.c文件。如果需要查看nojobs.c中部分函数的功能,则直接查找对应的jobs.c的版本即可。 二. 重要数据结构 进程: typedef struct process { struct process *next; /* 指向管道中的下一个进程*/ pid_t pid; /* 进程id */ WAIT status; /* wait等待该进程所返回的结果*/ int running; /* 是否处于运行状态,共有PS_DONE、PS_RUNNING、 PS_STOPPED、PS_RECYCLED*/ char *command; /* 该进程所正在执行的命令*/ }