• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    해결됨

파일디스크립터 및 스트림 질문

23.09.08 22:55 작성 조회수 163

0

  1. 파일디스크립터 다시 듣고 질문 하는데요

    예를들면 printf("~~") 이거만 있는 프로그램은 표준출력 스트림 이거만 가르키는거로 알고있습니다. 정확히는 이 프로세스의 파일디스크립터는 stdout 여기 스트림을 가리키겟죠

    근데 stdout stdin stderr 이거들 다 파일시스템에 있는 파일이죠(스트림이지만 리눅스에선 모든걸 다 파일이라고 하잖아요)??

  2. 그리고 stdin stdout이던 드라이버를 제어할수 있는 커널레벨의 함수로 만들어졌겟죠? 그리고 모니터에 출력이 되는건가요?

     

답변 1

답변을 작성해보세요.

0

안녕하세요 sweetstar100님

  1. stdout/stdin/stderr은 파일 시스템에 있는 파일이 아닙니다. 보통 스트림이라고 부르는데, 정확히는 파일 포인터의 형태입니다. 이 3개의 파일 포인터는 모든 프로세스가 생성될 때 생성됩니다. printf()를 호출하면 출력을 요청한 내용이 표준 출력 스트림(stdout)으로 출력됩니다.

  2. 리눅스에서 printf() 함수는 glibc라는 라이브러리에 구현되어 있습니다. 커널 레벨의 함수가 아닙니다. printf() 함수가 모니터에 글자를 찍는 드라이버 같은 코드도 포함하지 않습니다. printf()는 출력을 요청한 내용을 잘 formatting해서 출력 스트림에 전달하는 내용까지 구현되어 있을 것입니다. 출력 스트림에 온 내용이 어디로 가야하는 지에 따라 적절히 잘 처리가 되겠죠. 모니터에 내용을 출력하는 것이었다면 여러 과정을 거쳐 비디오 드라이버를 거쳐 화면에 보일 수 있게 될 것입니다. 저도 일련의 과정을 전부 파악해본적은 없네요 :)