怎样用c++重定向一个可执行文件(linux下)

发布网友 发布时间:2022-04-22 10:02

我来回答

3个回答

热心网友 时间:2022-04-12 20:49

仅仅用execl是不可能的。可以尝试用system()函数。

execl的语法是*args是binary的输入参数。redirection “>" 和”<"不是binary的输入参数,而是linux shell的功能。

要用p2与execl一起。这里提供一个网上别人的例子:www.unix.com/programming/53220-execl-redirecting-output-text-files.html

错误用法:
execl( "/bin/ls" , "-al" , '>' , "dirlist.txt" ,(char *) 0 );

和你的差不多。

别人建议正确代码(我没有试过):
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, char *argv)
{
int fd; /*file descriptor to the file we will redirect ls's output*/
if((fd = open("dirlist.txt", O_RDWR | O_CREAT))==-1){ /*open the file */
perror("open");
return 1;
}
p2(fd,STDOUT_FILENO); /*copy the file descriptor fd into standard output*/
p2(fd,STDERR_FILENO); /* same, for the standard error */
close(fd); /* close the file descriptor as we don't need it more */
/*execl ls */
execl( "/bin/ls" , "ls" , "-la" , (char *) 0 );
return 0;
}

热心网友 时间:2022-04-12 22:07

您需要设置的环境变量CL和连接器,如win7下的路径是C:\程序文件(x86)\微软的Visual Studio 8 \ VC \ BIN
您可以设置以下步骤a。问题百度HI我的步骤如下:
首先,打开接口配置环境变量,如下:我的电脑---属性---高级---环境变量
编辑PATH变量的最后如果没有分号,添加一个分号,那么你cl和连接器的目录的完整路径背后还记得添加一个分号,以确定PATH变量可以。请记住,重新打开cmd窗口。
另外,在虚拟机超低价团购,

热心网友 时间:2022-04-12 23:42

我用sh可以实现
想来cstdlib的system也可以

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com