반응형
dup2 및 pipe()를 사용하여 명령어 "ls -l | grep ^d | wc " 를 실행합니다.
#include<stdio.h>
#include<unistd.h>
int main()
{
int fd1[2];
pipe(fd1);
if(!fork())
{
dup2(fd1[1],1);
close(fd1[0]);
execlp("ls" , "ls" ,"-l",(char*)0);
}
else{
int fd2[2];
pipe(fd2);
dup2(fd1[0],0);
close(fd1[1]);
if(!fork()){
dup2(fd2[0],0);
close(fd2[0]);
execlp("wc","wc",(char*)0);
}
else{
dup2(fd2[1],1);
close(fd2[0]);
execlp("grep","grep","^d",(char*)0);
}
}
return 0;
}
ls -l 명령어를 실행하는 자프로세스를 작성하려고 합니다.자프로세스는 파이프에서 부모로 전달되어 표준 출력이 아닌 파이프 엔드에서 읽혀져 grep ^d 명령어를 실행합니다.
왜 작동하지 않는지에 대한 오해가 없는 경우도 있지만, 그 반대의 경우도 완전히 정상적으로 동작하고 있습니다.
int main()
{
int fd1[2];
pipe(fd1);
if(!fork())
{
dup2(fd1[1],1);
close(fd1[0]);
execlp("ls" , "ls" ,"-l",(char*)0);
}
else{
int fd2[2];
pipe(fd2);
dup2(fd1[0],0);
close(fd1[1]);
if(!fork()){
dup2(fd2[1],1);
close(fd2[0]);
execlp("grep","grep","^d",(char*)0);
}
else{
dup2(fd2[0],0);
close(fd2[1]);
execlp("wc","wc",(char*)0);
}
}
return 0;
}
언급URL : https://stackoverflow.com/questions/73597928/execute-the-command-ls-l-grep-d-wc-using-dup2-and-pipe
반응형
'source' 카테고리의 다른 글
MySQL에서의 경과시간 계산(InnoDb) (0) | 2022.09.04 |
---|---|
MySQL은 기존 테이블 열 정렬합니다. (0) | 2022.09.04 |
네이티브 스크립트는 vuex 요청이 완료될 때까지 요청을 기다립니다. (0) | 2022.09.04 |
Larabel 5의 모든 뷰에 데이터를 전달하는 방법 (0) | 2022.09.04 |
파일 또는 파일 유사 개체에 대한 힌트를 입력하십시오. (0) | 2022.09.04 |