Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Docbook 원문 mkdir(2)

1장. mkdir(2)

차례
1.1. 사용법
1.2. 설명
1.3. 반환값
1.4. 에러
1.5. 예제
1.6. 참고문헌

디렉토리(:12)를 생성한다.


1.1. 사용법

#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>

int mkdir(const char *pathname, mode_t mode);
		


1.2. 설명

mkdir(2)는 pathname이름을 가지는 디렉토리(:12)를 만들려고 시도한다.

mode는 사용할 수 있는 권한에 대한 허가권(:12)을 지정한다. 이것은 일반적으로 umask에 의해 수정된다. 만들어진 파일의 허가권은 (mode & ~umask)이다. 새롭게 만들어진 디렉토리는 프로세스(:12)의 유효(effective) uid(:12)의 소유이다. 만알 파일을 포함하는 디렉토리가 그룹 id비트가 설정되어 있거나 파일:::시스템(:12)이 BSD 그룹 의미로 마운트(:12) 되어 있다면, 새 디렉토리는 부모로 부터 그룹 소유권을 상속받는다. 그렇지 않으면, 프로세스의 유효 gid의 소유가 된다.


1.3. 반환값

성공하면 0을 실패하면 -1을 리턴한다.


1.4. 에러

EEXIST

pathname가 일반파일 혹은 디렉토리의 형태로 이미 존재한다.

EFAULT

pathname이 접근할수 없는 주소공간을 가르키고 있다.

EACCESS

부모 디렉토리가 프로세스에게 쓰기 허가권을 허락하지 않았거나, pathname에 있는 디렉토리 중 하나가 찾기 허가권이 없다.

ENAMETOOLONG

pathname이 너무 길다.

ENODIR

pathname에 디렉토리로서 사용한 요소가 디렉토리가 아니다.

ENOMEM

이용할 수 있는 커널 메모리가 충분하지 않다.

ENOMEM

이용할 수 있는 커널 메모리가 충분하지 않다.

EROFS

pathname가 읽기 전용 파일 시스템에 있는 파일을 가리키고 있다.

ELOOP

너무 많은 심볼릭:::링크(:12)를 pathname에서 만났다.

ENOSPC

pathname을 포함하는 장치에 새 디렉토리를 위한 공간이 없다.


1.5. 예제

#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>

int main(int argc, char ** argv)
{
    if (argc != 2)
    {
        fprintf(stderr, "Usage : jmkdir dirname\n");
        return 1;
    }

    if(mkdir(argv[1], 0755))
    {
        perror("mkdir error");
        return 1;
    }

    return 0;
}
		


1.6. 참고문헌

  1. read(2)

  2. write(2)

  3. fcntl(2)

  4. close(2)

  5. unlink(2)

  6. open(2)

  7. mknod(2)

  8. stat(2)

  9. umask(2)

  10. mount(2)

  11. socket(2)

  12. fopen(2)