tcgetpgrp, tcsetpgrp和tcgetsid函数
需要一种方法告诉内核哪个进程组是前台进程组,以让终端 驱动设备得知向哪里发送终端输入和由终端产生的信号。
#include <unistd.h>
pid_t tcgetpgrp(int filedes);
|
Returns: process group ID of foreground process group if OK, 1 on error |
int tcsetpgrp(int filedes, pid_t pgrpid);
|
Returns: 0 if OK, 1 on error |
函数tcgetpgrp返回前台进程组的进程组ID,并且在filedes上打开该终端。
如果进程有一个控制终端,这个进程可以调用tcsetpgrp去设置前台进程组ID为pgrpid。pgrpid这个值必须是同一会话中的进程组ID,并且filedes必须指向会话的控制终端。
多数应用并不直接调用这两个函数。它们都是由任务控制shell(job-control shell)调用。
Single UNIX Specification 定义了一个XSI扩展,被称作tcgetsid。可以通过一个指向控制TTY(controlling TTY)的文件描述符,让应用程序获得会话长的进程组ID。
#include <termios.h>
pid_t tcgetsid(int filedes);
|
Returns: session leader’s process group ID if OK, 1 on error |
须要去管理控制终端的应用程序,能使用tcgetsid去标识一个控制终端会话长的会话ID(这等同于会话长的进程组ID)。