나는 C로 내 셸을위한 다중 파이프를 구현하려고한다.C에서 다중 파이프 코딩
내가 가진 파이프 함수는 모두 파이프이다. b가 아니라 a | b | 기음.
int i = 0;
while (i < x)
{
pipe(c);
if ((pid = fork()) == 0)
{
dup2(t[i], 1);
if (i < 2)
dup2(p[0], 1);
close(p[1]);
r= execvp(cmd[i][0], cmd[i]);
}
wait(NULL);
close(p[0]);
i += 1;
t[i] = p[1];
가 어떻게이 코드를 만들 것입니다 작은 무언가를 추가 할 수있는 여러 파이프하시기 바랍니다 관리 :
int c[2];
int returnv;
pid_t id;
pipe(c);
pid = fork()) == 0
if (pid)
{
dup2(c[1], 0);
close(p[1]);
close(p[1]);
execvp(array(0), array);
}
if ((pid = fork()) == 0)
{
dup2(p[0], 1);
close(p(0));
close(p[0]);
returnv = execvp(array[0], array);
}
close(p[1]);
wait(NULL);
wait(NULL);
wait(NULL);
return returnv;
그리고이 두 번째 버전은 무엇입니까? 미리 감사드립니다.
실제로는 한 번만 필요한 동안 fork()를 두 번 호출합니다. 이것은 fork()가 두 번을 반환하기 때문에 : 아들 프로세스의 경우 0, 아버지 프로세스의 경우> 1 (보통 아들의 PID)입니다. 필요한 것을하기 위해 모든 코드가 필요하다고 생각하지 않습니다. – none
나는 이것에 너무 많은 시간을 보냈습니다, 이것이 작동하는 유일한 것입니다 ^^ 다중 파이프에 필요한 execvp에 대한 호출이 하나 있는데 작동하도록 만들 수는 없습니다. : – user2145240
게시물에서 코드를 제거하지 마십시오. 답변이 무효화됩니다. – FDinoff