免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5075 | 回复: 3
打印 上一主题 下一主题

linux守护进程运行模式下的system调用错误???诡异 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-28 17:09 |只看该作者 |倒序浏览
system函数或者··在daemon模式运行,阻塞,然后运行错误为什么
大家遇到过这样的问题吗

比如system("/bin/rm -rf /xxx/xxx");这样的在前台是可以运行的。
在后台运行就不行了,到底是为什么?

system("tar -czvf  test.tgz *.xml");
此函数非daemon模式运行正常,打包文件可以打开
daemon模式运行,可以打包,但是文件是错误的,无法解压

论坛徽章:
0
2 [报告]
发表于 2011-02-28 17:13 |只看该作者
附上daemon函数
  1. /*daemon routine*/
  2. void init_daemon (void)
  3. {
  4.   int pid;
  5.   if((pid = fork()))
  6.     exit(0);       
  7.   else if (pid < 0)
  8.     exit (1);               
  9.    /*是第一子进程,后台继续执行
  10.            *第一子进程成为新的会话组长和进程组长
  11.        */
  12.   setsid();                       
  13.    
  14.   if((pid = fork()))
  15.     exit(0);                       
  16.   else if (pid < 0)
  17.     exit(1);
  18.   /*是第二子进程,继续
  19.       *第二子进程不再是会话组长
  20.     */
  21.   close(STDIN_FILENO);
  22.   close(STDOUT_FILENO);
  23.   close(STDERR_FILENO);

  24.    /*改变工作目录到/
  25.        *重设文件创建掩模
  26.        */
  27.    chdir("/");               
  28.    umask(022);                       
  29.    return;
  30. }
复制代码

论坛徽章:
2
水瓶座
日期:2013-09-04 15:09:57白羊座
日期:2014-04-17 16:48:13
3 [报告]
发表于 2011-02-28 17:19 |只看该作者
切换到daemon模式后当前目录是 / 根目录,自己检查下命令里面文件什么的用的不是都是绝对地址

论坛徽章:
0
4 [报告]
发表于 2011-02-28 18:26 |只看该作者
问题解决:

原因:关闭了标准输出,system运行产生的输出结果无法输出,导致某些异常的问题
前提:某些特定的内核版本

解决方法:
system("tar -czvf test.tgz *.xml > /dev/null")
重定向即可,
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP