我有execlp问题。当我不知道如何正确地将指针数组重定向到execlp。比如我想使用重定向到execlp()
ls -l | sort -n
我的程序只需要“LS”和“排序”
int pfds[2];
pipe(pfds);
child_pid = fork();
if(child_pid==0)
{
close(1);
dup(pfds[1]);
close(pfds[0]);
execlp(*arg1, NULL);
}
else
{
wait(&child_status);
close(0);
dup(pfds[0]);
close(pfds[1]);
execlp(*arg2, NULL);
}
所有的命令都是指针数组,其中:ls -l
是在第一个表和sort -n
在第二
你最大的问题是让'ls'上的父'wait'然后exec'sort'是错误的方法。 – Duck
你是否建议删除等待命令? – user3174326
不,你应该'叉'两个孩子(在这种情况下)形成一条管道。这个原理现在的作用是,你可能已经列出了小的dirs。如果你是一个较大的那个,你的'ls'将写入管道,直到它填充PIPE_BUF字节,然后它将在写入时被阻塞(因为没有读取它)并且永不结束。你会永远等待一些不会结束的事情(自己)。 – Duck