2013-04-30 154 views
-1

我想重定向一个系统调用输出到文件 ..我想这个..重定向stdout和stderr到一个文件

#include <stdio.h> 
int main() 
{ 
     system("ls >> temp.txt"); 
     return 0; 
} 

但这只是工作系统调用 ..如果我把一些其他东西代替ls,错误输出不重定向到文件..它只是印在console ..

例如

#include <stdio.h> 
int main() 
{ 
system("hello >> temp.txt"); 
return 0; 
} 

我想错误输出重定向到文件..我怎么能这样做?感谢..

+5

'命令2>&1 >> temp.txt' – devnull 2013-04-30 07:41:07

+1

您还需要重定向标准错误。确切的方式取决于你的shell(可能是bash) - 查找标准错误重定向。 – ugoren 2013-04-30 07:41:28

+2

“我想将系统调用的输出重定向到一个文件中..我试过这个..但是这只对系统调用有效。”*那么,究竟是什么问题呢?听起来像是任务完成。* – Vorac 2013-04-30 08:09:28

回答

3

它可以通过

system("hello > temp.txt 2>&1"); 

这将直接标准输出和标准错误的文件TEMP.TXT ..

system("hello 2>&1 > temp.txt"); 

,这将是实现仅将标准输出直接输入到temp.txt中。

注意:

大于号不应该由文件描述符编号的空格分隔。如果它会被分开,我们会再次将输出指向一个文件。

相关问题