日期:2014-05-16  浏览次数:20660 次

问个execl函数的问题?
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
int main()
{
int pid;
pid = fork();
if(pid == 0)
{
execlp("ls","-l>123",(char*)NULL);
exit(0);
}
wait(0);
printf("hello world!\n");
return 0;
}
我想用ls -l命令重定向到123文件里,这写法有什么不对,应该怎么写?

------解决方案--------------------
ls程序并不理解>123的意思,楼主可以参考下这个链接http://topic.csdn.net/u/20091210/12/c4fc9cae-3d27-430c-9067-b03f636fbc33.html
------解决方案--------------------
if(pid == 0)
{
freopen("123", "w", stdout);
execlp("ls","ls", "-l",(char*)NULL);
exit(0);
}
------解决方案--------------------
直接用system就行了……system会创建新进程调用shell来执行这个程序,重定向是shell实现的。
你这样写反而复杂了。
当然你用popen打开"ls -l",并fread其结果也是可以了。
------解决方案--------------------
ls不能解释重定向,重定向要交给bash解释,"/bin/bash","ls","-l",">","123"