Cでプログラムを書き込もうとしています(Linux64ビットとGCC4.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);
プログラムは上記の行と交差しておらず、以下の行をスローしています。
新しいプログラムの実行:/ bin / bash ブレークポイント1の再設定エラー:シンボルテーブルがロードされていません。「file」コマンドを使用します。 [新しいプロセス2437] 新しいプログラムの実行:/ bin / ps
この問題の解決にご協力ください。