- 论坛徽章:
- 0
|
程序首先创建一个守护进程,随后exec另一个带控制台的程序,在两台测试机器上,一台可以正常执行,另一台则退出,报打开控制台失败。
有点怀疑是系统的参数配置问题,但又找不到原因。
请教大虾帮忙看下,多谢!
代码如下:
#include <signal.h>
#include <unistd.h>
#include <sys/file.h>
main(int argc,char **argv)
{
time_t now;
int childpid,fd,fdtablesize;
int error,in,out;
signal(SIGTTOU,SIG_IGN);
signal(SIGTTIN,SIG_IGN);
signal(SIGTSTP,SIG_IGN);
signal(SIGHUP ,SIG_IGN);
if(fork()!=0) exit(1);
if(setsid()<0)exit(1);
if(fork()!=0) exit(1);
if(chdir("/tmp")==-1)exit(1);
for (fd = 0, fdtablesize = getdtablesize(); fd < fdtablesize; fd++)
close(fd);
umask(0);
signal(SIGCHLD,SIG_IGN);
if( -1 == execl("/home/test", NULL))
{
perror("error when execl the file");
}
}
|
|
|