2015-12-21 40 views
2

在C控制台应用程序进行系统调用之后,我需要帮助来保存我的shell输出。C - 系统函数调用后将SHELL输出保存在文件中

我需要保存在一个文件中,用于执行一些操作,输出一个shell命令ping。 我已经尝试使用这个命令:

system(ping -c 5 google.com ./out > output.txt); 

,但我只找到一个空文件和命令无法正常工作。

有人能帮助我吗? (我正在使用UNIX/LINUX)

+2

那是什么'/ out'呢?它应该是:'system(“ping -c 5 google.com> output.txt”);' –

+0

非常感谢!你已经解决了我的问题! –

+0

@ l3x,请发表回覆,以便OP可以接受并关闭此问题 – user3629249

回答

1

ping命令的最后一个参数是要ping的目的地。因为你有一个迷惑的参数./outping试图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*/ 
} 
相关问题