如何丢弃系统命令的输出?
How to discard the output from a system command?
我最近写了这段代码来用C语言执行系统命令。我只是想测量这个系统命令执行的时间。
但是,我不希望在执行该程序时显示输出结果。
#include <stdio.h>
int main(int argc, char* argv[])
{
system("ls");
return 0;
}
如何丢弃系统命令的输出?
如果想通过系统命令来计时,可以在系统调用中重定向standout和stderr。不确定这是最优雅的,但它有效:
#include <stdlib.h>
#include <stdio.h>
int main() {
system("ls >/dev/null 2>&1");
}
请注意,system
需要 <stdlib.h>
headers。
当您从 C 调用 system()
时,将调用 shell 来解释您的命令。这意味着您可以使用 shell 重定向:
system("ls > /dev/null");
如果您希望错误也被抑制
system("ls > /dev/null 2>&1");
但是,由于 运行 和 shell 的开销以及构建 shell 命令的脆弱性,最好尽可能避免 system()
。
我最近写了这段代码来用C语言执行系统命令。我只是想测量这个系统命令执行的时间。
但是,我不希望在执行该程序时显示输出结果。
#include <stdio.h>
int main(int argc, char* argv[])
{
system("ls");
return 0;
}
如何丢弃系统命令的输出?
如果想通过系统命令来计时,可以在系统调用中重定向standout和stderr。不确定这是最优雅的,但它有效:
#include <stdlib.h>
#include <stdio.h>
int main() {
system("ls >/dev/null 2>&1");
}
请注意,system
需要 <stdlib.h>
headers。
当您从 C 调用 system()
时,将调用 shell 来解释您的命令。这意味着您可以使用 shell 重定向:
system("ls > /dev/null");
如果您希望错误也被抑制
system("ls > /dev/null 2>&1");
但是,由于 运行 和 shell 的开销以及构建 shell 命令的脆弱性,最好尽可能避免 system()
。