0
現在、私は小さなシェルで作業していますが、複数のコマンド( "ls | sort"など)で構成されるジョブの実行を実装しようとしています。 ソートプログラムが「不正なファイル記述子」に遭遇しているように見えるので、リダイレクションに関する問題に直面しています。最初のコマンドについては複数のコマンドを持つシェルとジョブ
:最後のコマンドについては
if (pipe(job->tubes[num_comm]) == -1)
{
perror("Erreur création tube");
exit(errno);
}
pid_t pid = fork();
if(pid==0) {
sig->sa_handler=SIG_DFL;
sigaction(SIGINT, sig, NULL);
close(job->tubes[num_comm][0]);
dup2(job->tubes[num_comm][1], 1);
close(job->tubes[num_comm][1]);
execvp(ligne_analysee->commandes[num_comm][0], ligne_analysee->commandes[num_comm]);
}
job->pids[num_comm]=pid;
close(job->tubes[num_comm][0]);
:あなたの助けを
pid_t pid = fork();
if(pid==0) {
dup2(job->tubes[num_comm-1][1], 0);
close(job->tubes[num_comm-1][1]);
sig->sa_handler=SIG_DFL;
sigaction(SIGINT, sig, NULL);
execvp(ligne_analysee->commandes[num_comm][0], ligne_analysee->commandes[num_comm]);
}
job->pids[num_comm]=pid;
close(job->tubes[num_comm][1]);
おかげ は、ここでは、コードです!