execlp に問題があります。コマンドをポインターの配列から execlp に正しくリダイレクトする方法がわからない場合。たとえば、私は使いたい
ls -l | sort -n
私のプログラムは「ls」と「sort」だけを取ります
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
2 番目のテーブルにあります。