我需要帮助来在从 C 控制台应用程序进行系统调用后保存 shell 输出。
我需要将 shell 命令 ping 的输出保存在一个文件中,以进行一些操作。 我已经尝试过使用这个命令:
system(ping -c 5 google.com ./out > output.txt);
但我只会找到一个空文件,并且该命令不起作用。
有人可以帮助我吗? (我在 UNIX/LINUX 中工作)
最佳答案
ping
命令的最后一个参数是您要 ping 的目标。因为您有一个杂散参数 ./out
,所以 ping
尝试对其进行 ping 操作,但显然该命令失败。
检查system
命令的返回码可以告诉你是否成功。因此,删除它并将正确的参数传递给 ping
将修复它:
system("ping -c 5 google.com > output.txt");
考虑到您要将输出重定向到文本文件并对其进行一些处理,使用 popen()
可能更合适。函数并直接读取输出。
例如,
FILE *fp;
char buf[1024];
fp = popen("ping -c 5 google.com", "r");
if (fp == NULL) {
/* handle error */
}
while (fgets(buf, sizeof buf, fp)) {
/*process each line here*/
}
关于C - 在系统函数调用后将 SHELL 输出保存在文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34393019/