strace
을 A
이라는 두 프로그램을 포크로하는 프로그램 B
및 C
에 대해 호출했습니다. strace
에서strace의 Syscalls
, 나는 syscalls
다음 한 :
pipe[([3,4]) = 0
pipe([5,6]) = 0
fork(wc) = 7135
fork (gnetcat) = 7136
close(3) = 0
close(5) = 0
close(4) = 0
close(6) = 0
wait4(-1, NULL, 0, NULL) = 7136
wait4(-1, NUKLL, 0, NULL) = 7135
내가이 경우 C로 프로그램 A
을 다시 작성하려고, 난 정말 정말 알고하지 않아도 무엇을 그 파일 기술자 3
, 4
, 5
및 6
은 무엇입니까? 그들이 무엇인지 알아낼 수있는 방법이 있습니까? 나는 3
이 stderr
인 것을 안다.
왜 파일 기술자가 빈 파일을 다음 :
이 내가 progcess 예를 들어, 아이에서 표준 출력을 캡처하는 inorder를 파이프를 여는 경우 보여야하는데 무엇인가? 그들은 데이터를 파이프하는 데 어떻게 작용할 것입니까? C로 구현할 수 있으려면'4 '와 더 높은 모든 파일 기술자가 무슨 뜻인지는 중요하지 않겠습니까? 파이프에 넣을 수 있지, 그치? – darksky
파일 설명자는 (열려있는) 파이프의 표현입니다. 글을 쓰고있는 곳을 확인할 수 있으려면 fd가 필요합니다. - strace에 read() 또는 write()가 없으므로이 파이프를 통해 전송되는 내용이 조금 이상하게 보입니다. - 그러나 "포크 (프로그램)"는 편집을 제안합니다 :-) – Sec