Chinaunix首页 | 论坛 | 博客
  • 博客访问: 804072
  • 博文数量: 106
  • 博客积分: 1250
  • 博客等级: 少尉
  • 技术积分: 1349
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-09 09:38
文章分类

全部博文(106)

文章存档

2014年(1)

2013年(13)

2012年(92)

分类: LINUX

2013-03-05 13:23:30

说明:

让一个程序后台运行。

原型:

[c-sharp] view plaincopy
  1. #include   
  2.   
  3. int daemon(int nochdir, int noclose);  

参数:

 nochdir为零时,当前目录变为根目录,否则不变;

 noclose为零时,标准输入、标准输出和错误输出重导向为/dev/null,也就是不输出任何信 息,否则照样输出。

返回值:

deamon()调用了fork(),如果fork成功,那么父进程就调用_exit(2)退出,所以看到的错误信息 全部是子进程产生的。如果成功函数返回0,否则返回-1并设置errno

示例:

[c-sharp] view plaincopy
  1. #include   
  2. #include   
  3. #include   
  4. #include   
  5. #include   
  6.   
  7. int main(int argc, char *argv[])  
  8. {  
  9.     char strCurPath[PATH_MAX];  
  10.   
  11.     if(daemon(1, 1) < 0)  
  12.     {  
  13.         perror("error daemon.../n");  
  14.         exit(1);  
  15.     }  
  16.     sleep(10);  
  17.   
  18.     if(getcwd(strCurPath, PATH_MAX) == NULL)  
  19.     {  
  20.         perror("error getcwd");  
  21.         exit(1);  
  22.     }  
  23.     printf("%s/n", strCurPath);  
  24.     return 0;  
  25. }  

假如运行成功,父进程在daemon函数运行完毕后自杀,以后的休眠和打印全部是子进程来运行。

可以修改daemon函数的参数来查看效果。

可以去掉daemon一句,用./a.out&来验证效果。

  1. #include  
  2.  
  3. int daemon(int nochdir, int noclose); 

参数:

 nochdir为零时,当前目录变为根目录,否则不变;

 noclose为零时,标准输入、标准输出和错误输出重导向为/dev/null,也就是不输出任何信 息,否则照样输出。

返回值:

deamon()调用了fork(),如果fork成功,那么父进程就调用_exit(2)退出,所以看到的错误信息 全部是子进程产生的。如果成功函数返回0,否则返回-1并设置errno

示例:

[c-sharp] view plaincopy
  1. #include  
  2. #include  
  3. #include  
  4. #include  
  5. #include  
  6.  
  7. int main(int argc, char *argv[]) 
  8.     char strCurPath[PATH_MAX]; 
  9.  
  10.     if(daemon(1, 1) < 0) 
  11.     { 
  12.         perror("error daemon.../n"); 
  13.         exit(1); 
  14.     } 
  15.     sleep(10); 
  16.  
  17.     if(getcwd(strCurPath, PATH_MAX) == NULL) 
  18.     { 
  19.         perror("error getcwd"); 
  20.         exit(1); 
  21.     } 
  22.     printf("%s/n", strCurPath); 
  23.     return 0; 

假如运行成功,父进程在daemon函数运行完毕后自杀,以后的休眠和打印全部是子进程来运行。

可以修改daemon函数的参数来查看效果。

可以去掉daemon一句,用./a.out&来验证效果。

阅读(1526) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~