C传递终端命令并打印回答

时间:2015-06-12 19:33:21

标签: c variables terminal

我正在尝试在终端中执行命令并分析结果,但是我无法在变量中写入输出。 我已经制作了一个显示我问题的示例代码:

extern char commandResult;

int main()
{
   char commandResult;
   commandResult = system("[ -f /etc/hosts ] && echo "Found" || echo "Not found"");
   printf("result: ");
   printf("%s", commandResult);
   printf("\n");
}

但输出如下:

CMakeCache.txt      Makefile        logo.c
CMakeFiles          pitm            pitm.c
CMakeLists.txt      README.md
LICENSE             cmake_install.cmake
result: (null) <- The output is supposed to be here! :/

我将使用“switch / case”或if / else阻止像

来分析变量
if(commandResult == "Found") {
    printf("Yes");
} else {
    printf("No");
}

那么有人能告诉我如何将输出写入变量而不是直接输出吗?

1 个答案:

答案 0 :(得分:2)

system不会返回您运行的命令的输出,而只是返回退出状态。您可能希望使用popen()来读取您运行的命令的输出。请参阅链接手册页中的示例。

您还需要使用strcmp来比较字符串,而不是==