NetBSD 시스템 호출 매뉴얼에서 표준 C 라이브러리를 언급하는 이유는 무엇입니까?

NetBSD 시스템 호출 매뉴얼에서 표준 C 라이브러리를 언급하는 이유는 무엇입니까?

NetBSD 9의 man(2) 페이지를 보고 있는데 모든 문서(write(2), open(2), Pipe(2))의 맨 위에 표준 C 라이브러리가 언급되어 있는 것을 볼 수 있습니다.

내가 이해하는 바는 시스템 호출이 라이브러리 함수(예: libc의 함수)와 독립적이라는 것입니다. Linux 시스템 호출 매뉴얼에는 유사한 언급이 없습니다. 이것은 이러한 메서드를 호출하는 것이 커널 함수를 직접 호출하는 것이 아니라 libc에 포함된 일부 래퍼 함수를 ​​호출한다는 것을 의미합니까? 이것이 보편적인 사실인가요, 아니면 단지 NetBSD의 특징인가요?

답변1

open()예를 들어 C 표준 라이브러리 함수입니다.

이것구현하다운영 체제에 따라 다릅니다. Unix 계열 시스템에서는 일반적으로 시스템 호출로 구현됩니다.

따라서 애플리케이션은 을 호출 open()하지만 syscall()Unix와 유사한 시스템은 호출합니다.

C는 많은 플랫폼으로 포팅되었지만 모든 플랫폼에 시스템 호출 기능이 있는 것은 아닙니다. 구현이 다릅니다.

open()따라서 우리는 라이브러리가 기본 운영 체제 구현에서 추상화되기 때문에 이와 같은 것을 표준 C 라이브러리의 일부라고 말합니다 .

관련 정보