我试图弄清楚如何system()
在 SunOS 上进行函数调用(在 C 中),并且没有将任何内容打印到 stderr(或 stdout)。目前,以下代码在 Linux、OSX、HP-UX 和 SunOS 上编译/运行。除了 SunOS,我得到了一个不错的输出,例如:
i = 32512 (0x7f00); wexitstatus = 127
但是,在 SunOS 上,我得到:
sh: unknowncommand: not found
i = 256 (0x100); wexitstatus = 1
...那额外的“sh:”行很烦人:)
(我的目标:安静地以编程方式确定我是否可以执行“cc”和/或“gcc”命令。)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/wait.h>
int main (int argc, char **argv)
{
int i;
char buf [1000];
strcpy (buf, "unknowncommand -c foo.c > /dev/null 2>&1");
i = system (buf);
printf ("i = %d (0x%x); wexitstatus = %d\n", i, i, WEXITSTATUS (i));
return 0;
}