/usr/include/unistd.h에 "개방형" 시스템 호출이 없는 이유는 무엇입니까? (그러나 "닫기"는)

/usr/include/unistd.h에 "개방형" 시스템 호출이 없는 이유는 무엇입니까? (그러나 "닫기"는)

내 이해로는열려 있는그리고폐쇄시스템 호출은 매우 관련성이 있는 것 같습니다.

  • 두 프로세스 파일 모두
  • 대부분의 UNIX 버전에서 사용 가능(? 이러한 기능이 없는 UNIX가 있습니까?)

그래서 나는 그들이 발표하는 것을 찾을 것으로 기대합니다둘 다/usr/include/unistd.h헤더 파일 에 . 그런데 이상하게도 거기에는 "off"만 선언되어 있고 "on"은 선언되어 있지 않습니다(내 4.17 Linux 커널 시스템에서는).

생략열려 있는unistd.h읽기를 확인하는 시스템 호출이 나타납니다.Open Group 기본 사양 2018년 7호판

이는 "선언" 단락에 설명되어 있습니다.

다음은 함수로 선언해야 하거나 매크로로 정의할 수 있습니다. 기능적 프로토타입이 제공되어야 합니다.

int access(const char *, int); int chdir(const char *); int chown(const char *,>
int close(int) ; 하지만 "열기"는 없습니다.]



그런 다음 - 나에게는 다시 이상하게도 파일에 /usr/include/asm/unistd_64.h다음 줄이 포함되어 있습니다 .

#define __NR_open 2

unistd.h가 여전히 "파일 열기"에 관심을 갖고 있는 것 같나요?

답변1

배경은 당신에게 필요한 것입니다

#include <fcntl.h>

어쨌든 관련 플래그를 얻으려면 open()네임스페이스를 필요 이상으로 오염시키지 않을 기회가 있어야 합니다.

open()이 파일은 에 있는 경우 unistd.h필요 #include fcntl.h하지만 기본적으로는 필요하지 않습니다.

unistd_64.h 파일은 비공식 공급업체 내부 포함 파일이며 이 파일의 내용은 POSIX 표준의 주제가 아닙니다.

관련 정보