免费注册 查看新帖 |

Chinaunix

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

守护进程里system()调用的问题,向前辈请教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-20 17:24 |只看该作者 |倒序浏览
最近在写一个守护进程,实现的功能是:调用一个命令进行数据备份。
虽然备份数据产生了,可是system的返回值总是显示子进程异常终止,
信号是SIGPIPE,这是怎么回事啊?实在是想不明白了,望大牛们指点?
谢谢!

论坛徽章:
0
2 [报告]
发表于 2010-10-20 20:58 |只看该作者
写了一个没有读端的管道?

论坛徽章:
0
3 [报告]
发表于 2010-10-20 21:28 |只看该作者
守护进程一般都关了终端描述符的,system()调用的程序是否往标准输出写东西?

论坛徽章:
0
4 [报告]
发表于 2010-10-21 09:16 |只看该作者
在system调用的命令里我已经将输出和出错输出重定向了,结果还是一样,不知道那个指的是那个管道
我的程序是这样写的:

int system_wrap(const char *cmdname,char *cmd)
{
  char resu[10];
  int status = 0;

  status = system(cmd);

  if(status == -1)
    {
      write_log_error(cmdname);
      write_log_error(" don't carry out\n");
      return status;
    }
  else
    {
      if(WIFEXITED(status))
        {
          status = WEXITSTATUS(status);
          if(status == 0)//success carry out
            return 0;
          else
            {
              write_log_error(cmdname);
              write_log_error(" failure ");
              memset(resu, '\0', 10);
              snprintf(resu, 10, "%d", status);
              write_log_error(resu);
              write_log_error("\n");
              return status;//failure
            }
        }
      else if(WIFSIGNALED(status))
        {
          write_log_error(cmdname);
          write_log_error(" had been broken ");
          memset(resu, '\0', 10);
          snprintf(resu, 10, "%d", WTERMSIG(status));
          write_log_error(resu);
          write_log_error("\n");
          return -2;
        }
    }
}



cmd命令类似于:xxx -x -xx -xxx=n > xxx.txt
另外下面这个也不对:cmd命令类似于:xxx -x -xx -xxx=n > xxx.txt 2> xxx1.txt

论坛徽章:
0
5 [报告]
发表于 2010-10-21 09:31 |只看该作者
重定向没用,除非打开文件时进行特殊设定,system()执行的进程的文件描述符是继承自当前进程的,你当前进程的三个基本文件描述符都关闭或者定向到/dev/null了,不能正常输出。

论坛徽章:
0
6 [报告]
发表于 2010-10-22 15:57 |只看该作者
谢谢了,这下有点明白了,
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP