使用execl重定向ls

时间:2016-01-04 17:26:10

标签: c unix

我想使用来自execl的ls并将输出重定向到存在的文件。我试过这个:

int value = execl("/bin/ls","ls","-l",">/home/sbam/myfile",NULL);

但它不起作用......我该怎么办?

感谢。

1 个答案:

答案 0 :(得分:1)

重定向是shell的一部分,而不是命令处理的东西。调用shell并通过shell执行命令,或者可以使用open打开文件并使用dup2使文件成为进程标准输出。

这样的东西
int fd = open("/home/sbam/myfile", O_CREAT | O_WRONLY, 0644);
if (fd != -1)
{
    if (dup2(fd, STDOUT_FILENO) != -1)
    {
        if (execl("/bin/ls", "ls", "-l", NULL) == -1)
            perror("execl");
    }
    else
        perror("dup2");
}
else
    perror("open");