I recently wrote this code to execute system command in C. I just want to measure time performed by this system command.
However, I don't want the output results to be displayed upon executing this program.
#include <stdio.h>
int main(int argc, char* argv[])
{
system("ls");
return 0;
}
How do I discard the output from the system command?
When you call system()
from C, a shell is invoked to interpret your command. This means you can use shell redirects:
system("ls > /dev/null");
and if you want errors to also be suppressed
system("ls > /dev/null 2>&1");
However, due to the overhead of running a shell and the fragility of constructing shell commands, it's better to avoid system()
when you can.
If you want to measure time by the system command, you can redirect standout and stderr in the system call. Not sure this is the most elegant, but it works:
#include <stdlib.h>
#include <stdio.h>
int main() {
system("ls >/dev/null 2>&1");
}
Note that you need the <stdlib.h>
headers for system
.