会话,进程组,作业控制
#include<unistd.h>
//获取一个进程的进程组
pid_t getpgrp(void);
//将进程id为pid的进程的进程组id修改为pgid
//如果将pid设置为0,那么调用进程的进程组id就会改变,如果将pgid的设为0,那么id为pid的进程的进程组id会被设置为pid的值
int setpgid(pid_t pid,pid_t pgid)
//返回pid制定的进程的会话id,如果pid为0,返回调用进程的会话id
pid_t getsid(pid_t pid);
//如果调用进程不是进程组首进程,那么setsid()会创建一个新会话
pid_t setsid(void);
//返回表示控制终端的路径名
char *ctermid(char *ttyname);
//获取和修改一个终端的进程组
pid_t tcgetpgrp(int fd);
int tcsetpgrp(inf fd,pid_t pgid);
jobs 列出所有后台作业,用%num引用作业
fg %1 把作业号为1的作业移动到前台
bg %1 把作业号为1的作业移动到后台
ctl+z SIGTSTP挂起
ctl+c SIGINT
ctl+\ SIGQUIT
fg/bg SIGCONT
SIGTTIN 终端读
SIGTTOU 终端写
SIGSTOP kill