C程序终止

时间:2012-10-26 14:02:14

标签: c++ c linux

我正在尝试用C语言编写程序(在Linux 64bit中使用GCC 4.1.2)。

int program_instances(char *cmdname)
{
   char buf[32], *ret;
   char cmdbuf[512];
   FILE *cmdpipe;

   sprintf(cmdbuf, "/bin/ps -eo comm | /bin/grep -c '%s'",
      cmdname);
   cmdpipe = popen(cmdbuf, "r");

   if (!cmdpipe)
   {
      return -1;
   }

   memset(buf, 0, sizeof(buf));
   ret = fgets(buf, sizeof(buf), cmdpipe);
   pclose(cmdpipe);

   if (!ret)
   {
      return -1;
   }

   int nr = atoi(buf);
   return nr;
}

尝试通过gdb调试问题,但在行

之后
sprintf(cmdbuf, "/bin/ps -eo comm | /bin/grep -c '%'",cmdname);  

该程序没有越过上面的行,抛出下面的行..

Executing new program: /bin/bash
Error in re-setting breakpoint 1: No symbol table is loaded.  Use the "file" command.
[New process 2437]
Executing new program: /bin/ps

请帮助我们解决此问题。

1 个答案:

答案 0 :(得分:3)

尝试使用-g编译代码并删除-O [编译器标志]。优化编译器(gcc)时改变指令顺序以提高速度。重新编译后再次附加调试器。