0
ben exec ve isimsiz boruları kullanarak bu komutu simüle etmek için bir C programı oluşturmak gerekir
:ls benzetimi bir C programında Broken Borular | sıralama | wc -l
ls | sort | wc -l
Ama bu nasıl yapabilirim? gerçekten kötü
int main(int argc, char** argv)
{
int fd1[2], fd2[2],fd3[2], pid;
createPipe(fd1);
createPipe(fd2);
createPipe(fd3);
pid=babyMaker();
if (pid == 0)
{
dup2(fd2[0],0);
dup2(fd3[1],1);
execlp("wc","wc","-l",NULL);
}
pid=babyMaker();
if (pid == 0)
{
dup2(fd2[1], 1);
dup2(fd1[0], STDIN_FILENO);
execlp("sort", "sort", NULL);
}
pid=babyMaker();
if (pid == 0)
{
dup2(fd1[1], 1);
execlp("ls", "ls", "-la", NULL);
}
char string[BUFFER_SIZE];
int bytesReaded=read(fd3[0],string,BUFFER_SIZE);
string[bytesReaded-1]=0;
printf("%s\n",string);
wait(NULL);
return 0;
}
EDIT sadece boru çalışmaya başlar ve ben denedim: Eklenen kodum
Kodunuzdan önce kod olarak görünmesi için başka bir satır eklemelisiniz. Cevabınızı daha da iyi hale getirmek için neden kapatmanız gerektiğini açıklayabilirsiniz. – migg