setsid函数说明
来源:互联网 发布:昆山美工培训多少钱 编辑:程序博客网 时间:2024/04/30 12:25
#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
#include<signal.h>
int main( void )
{
daemon_init();
fprintf(stderr, "main进程[%d]\n", getpid() );
while( 1 )
{
}
exit(0);
}
int daemon_init()
{
pid_t pid;
if( getppid() == 1 )
{
umask( 0 );
return 0;
}
if( (pid = fork()) < 0 )
{
fprintf(stderr, "fork err!\n");
return -1;
}
else if( pid > 0 )
{
fprintf( stderr, "结束进程[%d]\n", getpid() );
exit( 0 );
}
fprintf( stderr, "孤儿进程[%d]\n", getpid() );
signal( SIGHUP, SIG_IGN );
signal( SIGQUIT, SIG_IGN );
signal( SIGCHLD, SIG_IGN );
setsid();
umask( 0 );
return 0;
}
运行结果:
188DCCLINK-/home/ap/dcclink/.shan/practice>./ff
孤儿进程[14307]
main进程[14307]
结束进程[14306]
当进程是会话的领头进程时setsid()调用失败并返回(-1)。setsid()调用成功后,返回新的会话的ID,调用setsid函数的进程成为新的会话的领头进程,并与其父进程的会话组和进程组脱离。由于会话对控制终端的独占性,进程同时与控制终端脱离。
调用setsid有3个作用:
1 让进程摆脱原会话的控制;
2 让进程摆脱原进程组的控制;
3 让进程摆脱原控制终端的控制;
总之,就是让调用进程完全独立出来,脱离所有其他进程的控制。
- setsid函数说明
- setsid函数说明
- 关于setsid() 函数的说明
- 关于setsid() 函数的说明
- 关于setsid() 函数的说明
- 关于setsid() 函数的说明
- 守护进程 关于setsid() 函数的说明
- setsid()函数
- setsid()函数
- umask( )函数、setsid( )函数
- 守护进程,setsid()函数
- linux setsid函数
- linux中的setsid函数
- setsid()函数的作用
- Linux--setsid函数
- Linux平台下setsid()函数
- setsid()
- setsid()
- Java学习笔记(一)用Eclipse把一个简单游戏项目生成可执行的JAR文件
- js验证码
- java.io.Serializable浅析
- JQUERY学习日记
- SQL Server 2008 R2 导出数据脚本的方法(含数据)
- setsid函数说明
- 再谈最小费用最大流算法
- 原始js拼接json
- php上传文件大小限制
- ckeditor增加行距功能和中文字体
- JQuery 判断起始日期与结束日期大小
- DB2: Load
- PHP Memcache扩展
- 115_leetcode_Permutation Sequence