① tcgetpgrp & tcsetpgrp 函数
tcgetpgrp函数是用来获取前台进程组的ID
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
int main()
{
printf("我的ID:%d---我是进程组ID:%d\n",getpid(),getpgrp());//输出当前进程ID
//获取控制终端
int tty_fd = open("/dev/tty",O_RDWR);
if(tty_fd == -1)
{
perror("open tty ... ");
return -1;
}
//获取前台运行的进程组组ID
printf("前台进程组组ID:%d\n",tcgetpgrp(tty_fd));
if(close(tty_fd) == -1)
{
perror("close tty ... ");
return -1;
}
return 0;
}
运行结果:
这里是打开tty设备之后才有了控制终端的fd,一般情况下应用程序是不调用这两个接口的,
一般都是作业控制shell调用。
② tcgetsid 函数
该函数是获取会话首进程的进程组ID,当然,需要具有控制终端的程序才能调用。