如何使用EXECL()函数在C

问题描述:

例如在文件打印标准错误消息:在文件写入标准错误消息 命令是如何使用EXECL()函数在C

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

所以,

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

EXECL是返回-1 。它不是打印文本中的错误。文件

+4

重定向是* shell *功能,'exec'不会调用shell。尝试'system',而是调用一个shell。 – 2014-12-02 13:26:45

+0

或者通过告诉exec运行shell来手动运行你的命令。 – 2014-12-02 13:35:39

+0

please,探索更多@JoachimPileborg – user3391465 2014-12-02 13:36:50

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

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

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

Bash期望第一个非选项参数是它将执行的shell脚本。使用'-c'选项并将所有内容作为单个字符串传递(这基本上是'system'的功能)。 – 2014-12-02 14:08:26

+0

现在execl正在返回-1。 – user3391465 2014-12-02 14:11:42

+0

@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。