11、UNIX系统中的C语言作业控制详解

UNIX系统中的C语言作业控制详解

1. 文件与进程组基础

在每个进程中, /dev/tty 是与该进程关联的控制终端的同义词。对于那些无论输出如何重定向,都希望在终端上输出消息的程序来说,它非常有用。系统中的某些进程(通常是系统启动时启动的守护进程)会使用 ioctl 系统调用(操作常量为 TIOCNOTTY )来清除其控制终端。

在非伯克利版本的 UNIX 系统中,共享同一控制终端的一组进程被定义为一个进程组。在使用 sh 和旧的 tty 驱动程序的伯克利系统中,此定义仍然适用,但由于它们都不支持作业控制,因此不再进一步讨论。

在伯克利系统中,可以使用 setpgrp 系统调用将进程放入任意进程组。C shell( csh )以直接的方式使用此调用,每个 shell 作业构成一个单独的进程组。每次启动一个进程时, csh 会将该进程的进程组设置为与其进程 ID 相同的编号。对于管道,管道中的所有进程都被放入同一个进程组,即第一个派生进程的进程 ID(恰好是管道中的最后一个命令)。

每个终端都与一个称为“特殊进程组”的进程组相关联。处于特殊进程组中的进程被视为处于“前台”,允许从终端读取数据并接收键盘生成的中断。不在特殊进程组中的进程被视为处于“后台”,它们不能从终端读取数据,也不会接收键盘生成的中断。可以使用以下调用获取与终端关联的进程组:

ioct
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值