我遇到了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
位于第二个表中
答案 0 :(得分:0)
您可能想使用dup2重定向stdin和stdout。你也没有正确使用execlp。它期望由NULL指针终止的可变数量的参数。并且正如评论所建议的那样,wait命令不应该存在。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
int pfds[2];
pipe(pfds);
int child_pid;
child_pid = fork();
if(child_pid==0)
{
dup2(pfds[1], 1);
close(pfds[0]);
execlp("ls", "-al", NULL);
}
else
{
dup2(pfds[0], 0);
close(pfds[1]);
execlp("sort", "-n", NULL);
}
}