例如: 用于在文件中写入stderr消息的命令是
command > /dev/null 2>text.file"
所以,
execl("gcc" , "gcc" , "-g" , "test.c" , ">" , "/dev/null 2" , ">" , "test" , NULL);
execl返回-1。它不是text.file
中的打印错误答案 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标志。