首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

system创建一个脱离线程的进程

2013-09-07 
【求助】system创建一个脱离线程的进程看下面的代码说明,大家给个方法吧,谢谢了//假如我线程,或者这个主进程

【求助】system创建一个脱离线程的进程
看下面的代码说明,大家给个方法吧,谢谢了

//假如我线程,或者这个主进程退出了,我还想让system("/opt/scal")这个继续工作,应该怎么弄呢?


void *DaemonThread(void *pArg)
{
//线程函数中 调用了
    system("/opt/scal");

}


int main()
{
    //创建一个线程
    pthread_create(,DaemonThread,)//参数没写全
    //假如我线程,或者这个主进程退出了,我还想让system("/opt/scal")这个继续工作,应该怎么弄呢?

}


[解决办法]
创建一个守护进程啊
int Daemon()
{
struct sigaction act;

if(fork()!=0) exit(1);
 
/* 创建一个新的会议组 */  
if(setsid()<0)exit(1);
 
/* 忽略信号SIGHUP */  
act.sa_handler=SIG_IGN;  
sigemptyset(&act.sa_mask);
act.sa_flags=0;  
if(sigaction(SIGHUP,&act,NULL)==-1)exit(1);  
 
/* 子进程退出,孙进程没有控制终端了 */  
if(fork()!=0) exit(1);

if(chdir("/")==-1)exit(1);

return 0;
}

[解决办法]
fork+daemon
[解决办法]
输出还和当前终端绑定着,当前终端关闭后重新开一个就看不到输出了
或者system里面将输出重定向到/dev/null

热点排行