如何使用EXECL()函数在C
例如在文件打印标准错误消息:在文件写入标准错误消息 命令是如何使用EXECL()函数在C
command > /dev/null 2>text.file"
所以,
execl("gcc" , "gcc" , "-g" , "test.c" , ">" , "/dev/null 2" , ">" , "test" , NULL);
EXECL是返回-1 。它不是打印文本中的错误。文件
流重定向功能由您的shell提供,并不是执行命令的标准方式。
你可以做的是启动一个shell(比如bash),然后你可以通过传递你的命令来重定向stderr。
execl("/bin/bash", "bash", "-c", "gcc -g test.c > /dev/null 2>test", NULL);
Bash期望第一个非选项参数是它将执行的shell脚本。使用'-c'选项并将所有内容作为单个字符串传递(这基本上是'system'的功能)。 – 2014-12-02 14:08:26
现在execl正在返回-1。 – user3391465 2014-12-02 14:11:42
@JoachimPileborg它正在与系统..谢谢 – user3391465 2014-12-02 14:21:34
试试这个:
#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);
注意:您可能需要添加O_CREAT标志text.file。
重定向是* shell *功能,'exec'不会调用shell。尝试'system',而是调用一个shell。 – 2014-12-02 13:26:45
或者通过告诉exec运行shell来手动运行你的命令。 – 2014-12-02 13:35:39
please,探索更多@JoachimPileborg – user3391465 2014-12-02 13:36:50