如何丢弃系统命令的输出?

时间:2018-01-05 23:40:18

标签: c linux output-redirect

我最近编写了这段代码来执行C语言中的系统命令。我只是想测量这个系统命令执行的时间。

但是,我不希望在执行此程序时显示输出结果。

#include <stdio.h>
int main(int argc, char* argv[])
{
    system("ls");
    return 0;
}

如何丢弃系统命令的输出?

2 个答案:

答案 0 :(得分:2)

当您从C调用system时,会调用shell来解释您的命令。这意味着您可以使用shell重定向:

system()

并且如果您希望也可以抑制错误

system("ls > /dev/null");

但是,由于运行shell的开销和构造shell命令的脆弱性,最好尽可能避免使用system("ls > /dev/null 2>&1");

答案 1 :(得分:0)

如果要通过系统命令测量时间,可以在系统调用中重定向standout和stderr。不确定这是最优雅的,但它确实有效:

#include <stdlib.h>
#include <stdio.h>
int main() {
    system("ls >/dev/null 2>&1");
}

请注意,您需要<stdlib.h>的{​​{1}}标题。