UNIX 명령의 암시적 시스템 호출

UNIX 명령의 암시적 시스템 호출

저는 UNIX와 시스템 호출을 조사하다가 낮은 수준의 까다로운 문제에 부딪혔습니다. 질문은 이 명령이 호출하는 시스템 호출을 묻습니다.

grep word1 word2 > file.txt

몇 가지 조사를 했지만 기본 UNIX 호출에 대한 많은 리소스를 찾을 수 없었습니다.

open그러나 대답은 (파일의 파일 설명자를 엽니 다 file.txt) 다음 dup2( 의 파일 설명자로 STDOUT변경 )을 쓴 다음 (현재의 파일 설명자 ) 을 쓰고 마지막으로 ... 파일 을 닫는 것 같습니다. 설명자grepopenwriteSTDOUTgrepfile.txtclose()file.txt

그러나 제가 옳은지 올바른 길을 가고 있는지는 모르겠습니다. UNIX 경험이 있는 사람이라면 누구나 이 주제에 대해 제게 알려줄 수 있습니까?

답변1

Linux에서는strace:

strace -f sh -c 'grep word1 file > file.txt'

여기서는 자식 프로세스를 추적하기 위해 -fTell을 사용합니다.strace

*BSD에는dtruss(이것은dtrace잠재적인):

dtruss -f sh -c 'grep word1 file > file.txt'

OSX에는trace. 역사적인 Unix 시스템에는 다음이 포함됩니다.지붕틀(솔라리스,AIX, 등. ).

관련 정보