我想使用来自execl的ls并将输出重定向到存在的文件。我试过这个:
int value = execl("/bin/ls","ls","-l",">/home/sbam/myfile",NULL);
但它不起作用......我该怎么办?
感谢。
答案 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");