내 프로그램에서 2 개의 파이프를 설정하고 싶습니다. 나는 잘 작동하는 1 개의 파이프가 있지만 두 번째 파이프를 배치 할 위치를 알지 못합니다. 내 설정의 의사 코드는 다음과 같습니다C 프로그래밍 2 파이프
, 여기
는
//the first pipe:
pipe(pipe1)
//the second pipe:
pipe(pipe2)
pid = fork()
if(pid == 0) {
dup2(pipe1[1], 1)
close(pipe1[0])
execvp(beforepipe)
}
if(pid > 0) { //everything below is in here
pid2 = fork()
if(pid2 == 0){
//pipe1
dup2(pipe1[0],0)
dup2(out,1)
close(pipe1[1])
execvp(afterpipe)
//pipe2 does not work might need to be placed in different area
dup2(pipe1[1],1)
close(pipe1[0])
execvp(beforepipe1)
}
if(pid2 > 0){
close(pipe[0])
close(pipe[1])
wait() //this is an infinite for loop
pid3 = fork()
if(pid3 == 0){
dup2(pipe2[0],0)
dup2(out,1)
close(pipe2[1])
execvp(afterpipe2)
}
if(pid3 > 0) {
close(pipe2[0])
close(pipe2[1])
wait()
}
}
미안 중괄호와 함께있는 두 번째 파이프의 위치가 잘못된 위치에 있거나 코드가 전부입니다 잘못된.
제안 사항?
무엇을하려고 하는가? 파이프 라인이 어떻게 보이는지 보여 줄 수 있습니까? (예 : ' -> pipe1-> -> pipe2->'파이프 1을 통해 프로그램 2에 쓰고, 파이프 2를 통해 프로그램 3에 쓰는 것) –
ughoavgfhw
home/ma/cs570/Data1/input1 고양이 | tr az AZ | tr \\ q> your.outputc 이것은 작동 시키려고하는 명령입니다. 기본적으로 첫 번째 파이프는 input1에있는 "eschw obfuscation"을 뒤집어 "ESCHEW OBFUSCATION \"으로 변환합니다. 두 번째 파이프는 "\"를 q로 바꿔 "ESCHEW OBFUSCATIONq"을 얻습니다. 첫 번째 파이프는 작동하지만 두 번째 파이프는 작동하지 않습니다. –
"tr : set1을 자르지 않을 때 string2는 출력에서 비어 있지 않아야합니다"your.outputc의 "ESCHEW OBFUSCATION \"과 함께 –