2012-02-21 6 views
1

나는 시스템 클래스에서 파이핑과 쉘에 대해 배우고 있습니다. 나는 strace으로 장난하고있다. 나는 dpipe이라는 프로그램에서이 프로그램을 실행하고있다.파이프() 시스템 호출

pipe([3, 4]) 
pipe([5, 6]) 

그 정수는 무엇을 상징 수행하십시오 strace 로그에서

, 나는 다음을 참조? 나는 그 파이프 아래에서 기본적으로 한 명령의 출력을 셸에서 |을 사용하는 다른 명령의 입력으로 라우팅하는 데 사용됩니다. 그래서 그것은 우리의 삶을 더 쉽게 만듭니다. 이 경우 숫자의 배열은 무엇을 나타낼까요? 또한, piping이 쉘에서 방금 사용되는 경우 왜 C 시스템 콜이 사용됩니까? 자기 자신의 껍질을 쓰고 싶은 사람들을 위해서만 만들어 졌습니까?

답변

1

Ignacio는 대괄호 안의 숫자가 pipe() 시스템 호출에 의해 반환 된 두 개의 파일 설명 자임을 올바르게 설명했습니다. 첫 번째는 파이프의 읽기 끝이고 두 번째는 파이프의 쓰기입니다.

파이프는 쉘에서 사용하는 것이 아니라, 쉘을 사용하는 가장 일반적인 장소이기도합니다. 그러나, 당신은 그것을 뒤로 가지고 있습니다. 쉘은 시스템이 제공하는 시스템 호출 만 사용할 수 있으며 시스템은 pipe()을 제공하기 때문에 쉘은 파이핑을 제공 할 수 있습니다. o/s를 시스템 호출 형식으로 지원하지 않으면 쉘은 파이프 표기법을 제공하지 않을 것입니다. 모든 시스템 호출은 프로그래머가 고객 (고객이 작성하는 소프트웨어의 최종 사용자)에게 서비스를 제공 할 수있게합니다.

+0

파이프 syscall 또는 멀티 태스킹을 지원하지 않더라도 파이프와 같은 의미를 구현할 수 있습니다. DOS command.com은 두 번째 명령을 시작하기 전에 한 명령의 출력을 먼저 파일로 재지 정하여이 작업을 수행합니다. (물론 그 의미와 제한이 있습니다 ..) –

3

파일 설명자는 pipe(2,3p)입니다. 자세한 내용은 pipe(2) 매뉴얼 페이지를 참조하십시오.

1

파일 설명자입니다. 그리고 파이핑은 쉘에서 사용되는 것이 아닙니다. 파이핑은 모든 프로그램에서 수행 할 수 있으며 프로세스가 Unix에서 정보를 교환하는 주요 방법입니다. 그것은 쉘에 특별한 것이 아닙니다. 쉘은 사용자가 다른 프로세스를 쉽게 시작할 수 있도록하는 일반적인 프로세스입니다.