MKNOD(2)

명칭
mknod - 특수한 파일 노드를 작성한다

프로그램 라이브러리
libc

서식
<unistd.h> int mknod(const char *path, mode_t mode, dev_t dev)

해설
파일 시스템 노드 path 하지만, mode 그리고 지정된 파일 타입과 액세스 허가로 작성됩니다. 액세스 허가는 프로세스의 umask 치에 의한 수정을 받습니다.

mode 하지만 블록 또는 캐릭터형 특수 파일을 나타내는 경우, dev (은)는 시스템상의 특정의 디바이스를 나타낸다 구성에 의존하는 지시입니다. 그렇지 않은 경우 dev (은)는 무시됩니다.

mknod() 에는 슈퍼 유저 권한이 필요합니다.

반환값

에러
mknod() (은)는 다음의 경우에 처리에 실패해, 파일은 작성되지 않습니다.

[ENOTDIR]
    패스의 원가요소중에 디렉토리 이외의 것이 포함되어 있습니다.

[ENAMETOOLONG]
    패스명의 원가요소가 255 캐릭터를 넘고 있는지, 또는 패스명 전체가 1023 캐릭터를 넘고 있습니다.

[ENOENT]
    패스의 원가요소가 존재하지 않습니다.

[EACCES]
    지정된 패스에는, 검색이 허가되어 있지 않은 디렉토리가 포함되어 있습니다.

[ELOOP]
    패스명을 변환할 경우에 검출된 기호 연결이 너무 많습니다.

[EPERM]
    프로세스의 실효 유저 ID 가 슈퍼 유저가 아닙니다.

[EIO]
    디렉토리 엔트리의 작성중, 혹은 inode 를 할당중에 입출력 에러가 발생했습니다.

[ENOSPC]
    새로운 노드용의 엔트리를 배치하는 디렉토리를 확장할 수 없습니다. 디렉토리가 들어가 있는 파일 시스템상에 빈 용량이 남아 있지 않습니다.

[ENOSPC]
    노드를 작성하는 파일 시스템상에 미사용의 inode 가 없습니다.

[EDQUOT]
    새로운 노드의 엔트리를 배치하는 디렉토리를 확장할 수 없습니다. 디렉토리가 들어가 있는 파일 시스템상의 디스크 블록의 유저의 쿼터가 고갈했습니다.

[EDQUOT]
    노드를 작성중의 파일 시스템상의 inode 의 유저의 쿼터가 고갈했습니다.

[EROFS]
    지정된 파일은 읽기 전용 파일 시스템상에 있습니다.

[EEXIST]
    지정의 파일이 벌써 존재하고 있습니다.

[EFAULT]
    path (은)는, 프로세스에 할당할 수 있었던 address 공간의 범위외를 가리키고 있습니다.

[EINVAL]
    블록 또는 캐릭터형 특수 파일 (또는 whiteout) 이외의 작성은 행해지지 않습니다.

관련 항목
chmod(2), mkfifo(2), stat(2), umask(2)

역사
mknod() 함수는 AT&T UNIX 그리고 등장했습니다.