如何使用c中的execl()函数在文件中打印stderr消息

时间:2014-12-02 13:24:59

标签: c bash redirect stdout stderr

例如: 用于在文件中写入stderr消息的命令是

command > /dev/null 2>text.file"

所以,

execl("gcc" , "gcc" , "-g" , "test.c" , ">" , "/dev/null 2" , ">" , "test" , NULL);

execl返回-1。它不是text.file

中的打印错误

2 个答案:

答案 0 :(得分:0)

流重定向功能由shell提供,并不是执行命令的标准方法。

你可以做的是启动一个shell(比如bash),然后你可以通过传递你的命令来重定向stderr。

execl("/bin/bash", "bash", "-c", "gcc -g test.c > /dev/null 2>test", NULL);

答案 1 :(得分:0)

试试这个:

#include<unistd.h>
#include<fcntl.h>
//Remaining code till here
dup2(open("/dev/null",O_WRONLY), 1); //redirect stdout to /dev/null
dup2(open("text.file",O_WRONLY), 2); //redirect stderr to text.file
execl("gcc" , "gcc" , "-g" , "test.c", NULL);

注意:您可能需要为text.file添加O_CREAT标志。