SETSID - Linux手册页
时间:2019-08-20 17:59:23 来源:igfitidea点击:
Linux程序员手册 第2部分
更新日期: 2017-09-15
名称
setsid-创建会话并设置进程组ID
语法
#包括
#包括
pid_t setsid(void);
说明
如果调用进程不是进程组负责人,则setsid()将创建一个新会话。调用进程是新会话的领导者(即,其会话ID与进程ID相同)。调用进程也将成为会话中新进程组的进程组负责人(即,使其进程组ID与其进程ID相同)。
调用进程将是新进程组和新会话中的唯一进程。
最初,新会话没有控制终端。有关会话如何获取控制终端的详细信息,请参见凭据(7)。
返回值
成功后,将返回调用进程的(新)会话ID。发生错误时,将返回(pid_t)-1,并且将errno设置为指示错误。
错误说明
- EPERM
- 任何进程的进程组ID等于调用进程的PID。因此,特别是,如果调用进程已经是进程组领导者,则setsid()将失败。
遵循规范
POSIX.1-2001,POSIX.1-2008,SVr4。
备注
通过fork(2)创建的子代继承其父代的会话ID。会话ID在execve(2)中保留。
进程组负责人是其进程组ID等于其PID的进程。禁止进程组负责人调用setid()可以防止进程组负责人将自己置于新会话中,而进程组中的其他进程仍保留在原始会话中。这种情况将打破会话和流程组的严格的两级层次结构。为了确保setsid()将成功,请调用fork(2)并使其具有父_exit(2),而子级(根据定义不能是进程组负责人)调用setsid()。
如果会话具有控制终端,并且未设置该终端的CLOCAL标志,并且发生了终端挂断,则向会话负责人发送SIGHUP信号。
如果作为会话领导者的进程终止,则将SIGHUP信号发送到控制终端的前台进程组中的每个进程。
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。