当前位置: 技术问答>linux和unix
问个execl函数的问题?
来源: 互联网 发布时间:2016-12-28
本文导语: #include #include #include #include #include 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文件里,这写法有什么...
#include
#include
#include
#include
#include
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文件里,这写法有什么不对,应该怎么写?
#include
#include
#include
#include
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);
}
{
freopen("123", "w", stdout);
execlp("ls","ls", "-l",(char*)NULL);
exit(0);
}
|
直接用system就行了……system会创建新进程调用shell来执行这个程序,重定向是shell实现的。
你这样写反而复杂了。
当然你用popen打开"ls -l",并fread其结果也是可以了。
你这样写反而复杂了。
当然你用popen打开"ls -l",并fread其结果也是可以了。
|
ls不能解释重定向,重定向要交给bash解释,"/bin/bash","ls","-l",">","123"