1 / 116

Embedded Linux programming

Embedded Linux programming. 하 완 수. 분야별 주제. 파일 시스템. 파일 제어. System Call I/O. File Status & Directory. 프로세스. 프로세스 제어. IPC. Signal. Pipe. Embedded Linux Programming. 파일 시스템. 파일 시스템. 『 파일 시스템 구조 』. ●실 데이터 저장. ● inode list 를 갖는다 . ● 파일 접근 권한 , 파일 소유자 ID, 파일 크기 ,

Download Presentation

Embedded Linux programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Embedded Linux programming 하 완 수

  2. 분야별 주제 파일 시스템 파일 제어 System Call I/O File Status & Directory 프로세스 프로세스 제어 IPC Signal Pipe

  3. Embedded Linux Programming 파일 시스템

  4. 파일 시스템 『 파일 시스템 구조 』 ●실 데이터 저장 ● inode list를 갖는다. ● 파일 접근 권한, 파일 소유자 ID, 파일크기, File point등에 대한 정보들 포함. ● inode는 파일 하나당 하나씩 할당하고 추가 정보로 참조계수, inode번호등을 포함. ● 파일 시스템 관리 정보(파일 시스템 크기, inode 블록의 전체크기, 데이터 블록의 전체 크기 등) 저장. ● 운영체제를 부팅시키기위한 코드 ( 부트코드 ) 저장 위치.

  5. 파일 시스템 Inode Table ☞ 실제 파일 위치를 가리킴. File Descriptor Table ☞ 프로세스 당 하나씩 할 당. ☞ File Descriptor, Flag, File Table Pointer(ptr) 포함. System File Table ☞ 파일 시스템 별 하나씩 구성. ☞ 참조계수(cnt), inode Pointer(ptr), Flag 포함.

  6. Embedded Linux Programming 파일 제어

  7. 파일 제어 System Call I/O Standard I/O Library 를 호출하여 System Call로 접근하여, 호환이 좋아짐. Application1 Application2 디바이스 1 디바이스 1 디바이스 1

  8. 파일 제어 Standard Library I/O Standard I/O Library 를 호출하여 System Call로 접근하여, 호환이 좋아짐. Application1 Standard I/O Library 디바이스 1 디바이스 1 디바이스 1

  9. Embedded Linux Programming System Call I/O

  10. System Call I/O open 존재하는 파일이나 장치를 오픈 하거나 존재하지 않는 파일이나 장치를 생성. ( 오류일 경우 -1을 반환 ) ☞ Prototype #include<sys/types.h> #include<sys/stat.h> #include<fcntl.h> int open(const char *pathname, int oflag); int open(const char *pathname, int oflag, mode_t mode); ☞ pathname 파일의 경로. ☞ oflag O_RDONLY : 읽기 전용. O_WRONLY : 쓰기 전용. O_RDWR : 읽기, 쓰기 가능. O_APPEND : 이어 쓰기. Next ▶

  11. System Call I/O open 존재하는 파일이나 장치를 오픈 하거나 존재하지 않는 파일이나 장치를 생성. ( 오류일 경우 -1을 반환 ) O_CREAT : 파일이 없을 경우 파일을 생성. O_EXCL : O_CREAT시 파일이 있는 경우에 error를 발생. O_TRUNC : 파일이 있는 경우에 기존 파일을 지운다. O_NONBLOCK : nonblocking 모드. O_SYNC : 매 쓰기 연산마다 디스크 I/O가 발생하도록 설정. ☞ mode 파일 접근 권한, 파일 생성시에만 사용.

  12. System Call I/O creat 파일을 생성. ( 오류일 경우 -1을 반환 ) ☞ Prototype #include<sys/types.h> #include<sys/stat.h> #include<fcntl.h> int creat(const char *pathname, mode_t mode); ☞ pathname 파일의 경로. ☞ mode 파일의허가 모드.

  13. System Call I/O close 파일서술자( file descriptor )를 닫는다. ( 반환값이 0일 경우에 성공, -1일 경우에 오류 ) ☞ Prototype #include<unistd.h> int close(int fd); ☞ fd 닫기를 원하는 파일의 file descriptor.

  14. System Call I/O lseek 파일의 읽기, 쓰기 위치를 원하는 위치로 변경 ( 성공일 경우 새로운 위치, 오류일 경우 -1을 반환 ) ☞ Prototype #include<sys/types.h> #include<unistd.h> off_t lseek(int fildes, off_t offset, int whence); ☞ fildes 개방되어 있는 파일의 파일 기술자( file descriptor ) ☞ offset 읽기,쓰기 포인터의 새 위치를 실질적으로 결정. 시작 위치에 더해질 바이트의 수를 지정. ☞ whence 어느 위치를 기준으로 하여 offset을 측정할지 결정. SEEK_SET : offset을 파일의 시작부터 계산. ( 보통 실제 정수값 = 0 ) Next ▶

  15. System Call I/O lseek 파일의 읽기, 쓰기 위치를 원하는 위치로 변경 ( 성공일 경우 새로운 위치, 오류일 경우 -1을 반환 ) SEEK_CUR : offset을 파일 포인터의 현재 위치부터 계산. ( 보통 실제 정수값 = 1 ) SEEK_SET : offset을 파일의 끝부터 계산. ( 보통 실제 정수값 = 2 )

  16. System Call I/O read 파일 읽기 ( 성공일 경우 읽어들인 byte의 수를 정수로, 오류일 경우 -1을 반환 ) ☞ Prototype #include<unistd.h> ssize_t read(int filedes, void *buf, size_t nbytes); ☞ filedes 개방되어 있는 파일의 파일 기술자.( file descriptor ) ☞ buf 데이터를 읽어 들일 메모리 주소 . ☞ nbytes 읽어 들일 데이터의 바이트 수.

  17. System Call I/O dup, dup2 파일 기술자(file descriptor) 복사. (성공일 경우 할당 받은 파일 기술자(file descriptor) 반환, 오류일 경우 -1을 반환 ) ☞ Prototype #include<unistd.h> int dup(int filedes); 사용되지 않는 가장 작은 파일 기술자로 복사. ( 인수로 주어진 file descriptor의 file table 항을 가리킨다. ) ☞ filedes 개방되어 있는 파일의 파일 기술자.( file descriptor ) ☞ return 사용되지 않는 가장 작은 파일 기술자(file descriptor) 반환. Next ▶

  18. System Call I/O dup, dup2 파일 기술자(file descriptor) 복사. (성공일 경우 할당 받은 파일 기술자(file descriptor) 반환, 오류일 경우 -1을 반환 ) int dup2(int filedes, int newfiledes); newfiledes 에서 지정한 file descriptor로 복사. ( filedes가 가리키는 file table의 항을 가리킨다. ) ☞ filedes 개방되어 있는 파일의 파일 기술자.( file descriptor ) ☞ newfiledes 0 : filedes를 표준 입력으로 가리킨다. 1 : filedes를 표준 출력으로 가리킨다. 2 : filedes를 표준 에러로 가리킨다.

  19. System Call I/O fcntl 파일 기술자(file descriptor) 조작 ( 오류일 경우 -1을 반환 ) ☞ Prototype #include<sys/types.h> #include<fcntl.h #include<unistd.h> int fcntl(int fd, int cmd); ☞ filedes 개방되어 있는 파일의 파일 기술자.( file descriptor )

  20. System Call I/O fcntl 파일 기술자(file descriptor) 조작 ( 오류일 경우 -1을, 성공일 경우 cmd에 따라 값을 반환 ) ☞ Prototype int fcntl(int fd, int cmd, long arg); ☞ filedes 개방되어 있는 파일의 파일 기술자.( file descriptor ) ☞ cmd F_DUPFD : 파일 디스크립터를 복사. 세번째 인수 보다 크거나 같은 값 중, 가장 작은 미사용의 값을 반환. F_GETFD : 파일 디스크립터의 플래그를 반환. ( 현재는 FD_CLOEXEC만 사용 ) F_SETFD : 파일 디스크립터의 플래그를 설정.(FD_CLOEXEC or0 ) Next ▶

  21. System Call I/O fcntl 파일 기술자(file descriptor) 조작 ( 오류일 경우 -1을, 성공일 경우 cmd에 따라 값을 반환 ) ☞ Prototype F_GETFL : 파일 테이블에 저장되어 있는 파일 상태 플래그를 반환. F_SETFL : 파일 상태 플래그의 설정. ( O_APPEND, O_NONBLOCK, O_SYNC등을 지정 ) FD_CLOEXEC : EXEC()호출로 프로세스가 전환될때 해당 파일은 닫히게 되고, 그렇지 않으면 새로운 프로세스에서도 이 파일을 계속 사용. F_GETOWN : 비동기 입출력과 관련되어 사용되며, SIGIO와 SIGURG 신호를 받는 프로세스 아이디를 얻기 위해서 사용. F_SETOWN : 비동기 입출력과 관련되어 사용되며, SIGIO와 SIGUR 시그널을 수신하는 프로세스 아이디나 그룹을 설정.

  22. Embedded Linux Programming Standard Library I/O

  23. Standard Library I/O Stream ☞ 프로그램과 파일 사이의 자료 흐름. ☞ 표준 입출력 함수는 스트림(Stream)을 매개로 파일에 접근. ☞ SystemCall Function의 경우 파일 기술자(file descriptor)를 통하여 파일을 파악하고 접근.

  24. Standard Library I/O FILE ☞ FILE 구조체 ㆍ파일의 정보가 들어있는 구조체. ㆍ하나의 스트림을 다루기 위한 정보를 포함하는 구조체. ㆍ스트림을 개방하면 FILE 구조체에 대한 포인터를 얻는다.(fopen) ㆍ표준입출력함수는 위에서 얻은 파일 포인터를 인자로 하여 파일을 다룬다. ㆍ프로세스는 커널에 의해 기본적으로 3개의 스트림을 자동으로 얻는다. ( 표준 입력: stdin / 표준 출력 : stdout / 표준 에러 : stderr ) ☞ FILE Structure ㆍint _cnt : 버퍼에 남아있는 문자 수. ㆍunsigned char *_ptr : _base가 가리키는 포인터에서 다음에 읽거나 쓸 문자의 위치. ㆍunsigned char *_base : 스트림과 관련된 버퍼의 시작주소. ㆍunsigned char _flag : 읽기, 쓰기 모드와 에러 상태 등의 제어 정보. ㆍunsigned char _file : 스트림과 연관된 file descriptor.

  25. Standard Library I/O 표준 I/O Buffering 파일 접근 횟수와 내부 시스템 접근 횟수를 최소화 하기 위해 사용. ☞ Fully Buffered ㆍ버퍼가 가득 찬 경우에 실질적인 입출력이 일어난다. ☞ Line Buffered ㆍ’\n’문자에 의해 입출력이 이루어 진다. ( 예 : 표준 입력, 표준출력의 터미널 ) ☞ Unbuffered ㆍApplication과 file사이에 버퍼를 사용하지 않는다. ( 예 : 표준에러(stderr) )

  26. Standard Library I/O fopen 스트림( Stream )을 open. ( 오류시 -1을, 성공시 open한 file pointer를 반환 ) ☞ Prototype #include<stdio.h> FILE *fopen(const char *pathname, const char *type); ☞ pathname 파일의 경로 ☞ type 파일 접근 모드 ㆍr 또는 rb : 읽기 전용 모드 ( rb는 binary 형태로 읽어들임. ) ㆍw 또는 wb : 쓰기 전용모드 ( 파일이 없으면 새로 생성, 있으면 내용 삭제 ) ㆍa 또는 ab : append모드 ( 파일이 없으면 생성. 이미 존재하는 경우 file pointer가 파일 끝부분에 위치하게 되어 이 위치부터 뒤쪽으로만 write 가능. Next ▶

  27. Standard Library I/O fopen 스트림( Stream ) open. ( 오류시 -1을, 성공시 open한 file pointer를 반환 ) ㆍr+ 또는 rb+ : 읽고 쓰기 모드 ( rb는 binary 형태로 쓰거나 읽어 들임. ) ㆍw+ 또는 wb+ : 읽고 쓰기 모드 ( 파일이 없으면 새로 생성, 있으면 기존 내용 삭제 ) ㆍa+ 또는 ab+ : append모드, 읽고 쓰기 가능. ( 파일이 없으면 생성. 이미 존재 하는 경우파일의 끝부분에서만 추가된 내용을 쓸수 있고, 읽기 는 fseek로 지정한 file pointer 위치에서도 가능하다. ) ☞ FILE이 새로 생성되는 경우 0666의초기 permission을 갖고, DIRECTORY가 새로 생성되는 경우 0777의 초기 permission을 갖는다.

  28. Standard Library I/O freopen 스트림( Stream ) open. ( 오류시 -1을, 성공시 open한 file pointer를 반환 ) ☞ Prototype #include<stdio.h> FILE *freopen(const char *pathname, const char *type, FILE *fp); ㆍ pathname : 파일의 경로. ㆍ type : fopen과 동일. ㆍ fp : 일반적으로 stdin, stdout, stderr 등과 같은 미리 정의된 스트림. ☞ fp가 가리키는 스트림으로 파일 개방. ☞ 전형적으로 미리 정의된 스트림들 중 하나로 명시된 파일을 개방하고자 하는 경우 사용.

  29. Standard Library I/O fdopen 스트림( Stream ) open. ( 오류시 -1을, 성공시 open한 file pointer를 반환 ) ☞ Prototype #include<stdio.h> FILE *fdopen(int filedes, const char *type); ㆍ filedes : 개방되어 있는 파일의 파일 기술자.( file descriptor ) ㆍ type : fopen과 동일. ☞ 이미 열려진 file descriptor에 대해 표준 입출력 스트림으로 연결. ☞ fopen으로 개방 할 수 없는 파일에 대해 수행. ( 파이프, 네트워크, 소켓 등 )

  30. Standard Library I/O fclose 열려진 파일 스트림( Stream)을 닫는다. ( 오류시 EOF를, 성공시 0을 반환 ) ☞ Prototype #include<stdio.h> int fclose(FILE *fp); ㆍ fp : file pointer ☞ FILE 포인터가 가르키는 스트림과 파일을 분리하고 파일을 닫는다. ☞ 출력 버퍼에 있는 모든 자료는 파일에 저장되고, 입력 버퍼에 있는 모든 자료는 버려진 후에 버퍼를 해제한다. ☞ 프로세스가 정장적으로 종료하는 경우, 닫히지 않은 표준 입출력 스트림에 대해 fclose가 수행된다.

  31. Standard Library I/O 입출력 함수 메크로 함수를 사용하면 분기가 없어 성능이 좋아지지만 실행파일이 커진다는 단점이 있다. ☞ getc(), fgetc(), getchar() : 문자 단위 입력( 한번에 한 문자씩 읽어 들임 ) ☞ putc(), fputc(), putchar() : 문자 단위 출력( 한번에 한 문자씩 출력 시킴 ) ☞ fgets(), gets() : 줄 단위 입력( newline 또는 EOF를 만날때까지 파일로 부터 읽어 버퍼에 저장 시킴 ) ☞ puts(), fputs() : 줄 단위 출력( \0 으로 끝나는 문자열(str)을 스트림에 쓴다. Fputs 는 newline을 추가하지 않고, puts는 \n문자를 덛붙여 newline을 추가 )

  32. Standard Library I/O Binary I/O 분산 이기종의 환경에서는 문제 발생의 소지가 있다. ☞ Binary I/O 의필요성 ㆍ구조체 전체를 읽거나 쓸 경우. ㆍ원하는 크기 만큼의 데이터를 읽고 쓸 경우. ☞ 종류 ㆍfread : Binary Input ㆍfwrite : Binary Output ☞ prototype #include<stdio.h> Size_t fread(void*ptr, size_t size, size_t nobj, FILE *fp); Size_t fwrite(const void *ptr, size_t size, size_t nobj, FILE *fp); ㆍptr : 버퍼의시작 포인터 ㆍsize : 입력단위의 크기 ㆍnobj : 입출력을수행할 객체의 수 ㆍfp : 파일 포인터

  33. Standard Library I/O ftell 오류이면 -1을, 성공 시 커서의 위치를 반환 한다. ☞ Prototype #include<stdio.h> long ftell(FILE *fp); ㆍfp : file pointer ☞ 파일의현재 시작점 부터 떨어진 byte수( offset ) 을 돌려준다.

  34. Standard Library I/O fseek 오류이면 0이아닌 값을, 성공 시 0을 반환 한다. ☞ Prototype #include<stdio.h> int fseek(FILE *fp, long offset, int whence); ㆍfp : file pointer ㆍoffset : 기준점에서의 상대적인 거리.( 음수도 가능 ) ㆍwhence : offset 지정시의 기준위치. SEEK_SET : 파일의 가장 앞. SEEK_CUR : 파일의 현재 offset. SEEK_END : 파일의 가장 끝.

  35. Standard Library I/O rewind ☞ Prototype #include<stdio.h> void rewind(FILE *fp); ㆍfp : file pointer ☞ 파일의 offset을 처음으로 이동.

  36. Standard Library I/O fgetpos 오류시 0이아닌 값을, 성공시 0을 반환 ☞ Prototype #include<stdio.h> int fgetpos(FILE *fp, fpos_t *pos); ㆍfp : File Pointer ㆍpos : 값을 받아올 변수 ☞ 파일 위치표식의 현재 값을 pos가 가리키는 객체에 저장.

  37. Standard Library I/O fsetpos 오류시 0이아닌 값을, 성공시 0을 반환 ☞ Prototype #include<stdio.h> int fsetpos(FILE *fp, const fpos_t *pos); ㆍfp : File Pointer ㆍpos : 이동시키고자 하는 위치 ☞ 인자로 넘겨받은 해당 pos로 이동.

  38. Standard Library I/O Ferror, feof, clearerr Stream상태를 check 하거나 reset. ☞ Prototype #include<stdio.h> int ferror(FILE *fp); int feof(FILE *fp); int clearerr(FILE *fp); ㆍfp : 조사 대상의 file pointer. ☞ 입력 함수가 어떤 원인에 의 한 EOF 복귀인지를 확인하기 위해 사용. ㆍ입출력 오류 발생 여부 : ferror ㆍ파일의 끝을 만났는지의 여부 : feof ☞ 오류나 파일의 끝을 나타내는 정보는 FILE 구조체의 _flag 필드에 저장. ☞ FILE 구조체의 _flag 필드에서 feof()는 _IOEOF, ferror()는 _IOERR 비트가 설정되어 있는지 검사한다. ☞ CLEARERR 함수는 _flag 필드의 _IOEOF, _IOERR 비트를 리셋 한다.

  39. Standard Library I/O tmpfile 임시 파일을 생성한다. ( 오류 시 NULL을, 성공 시 임시파일의 file pointer를 반환 ) ☞ Prototype #include<stdio.h> FILE *tmpfile(void); ☞ w+ 모드로임시파일 생성. ☞ 파일을 닫거나 프로그램이 종료하면 자동 소멸 한다.

  40. Standard Library I/O tmpnam 시스템에서 유일한 파일 이름을 생성. ( 오류 시 NULL문자열을, 성공 시 새로운 임시 파일을 반환 ) ☞ Prototype #include<stdio.h> char *tmpnam(char *ptr); ㆍptr : 임시파일의 이름이 복사될 버퍼의 포인터 ☞ !NULL : L_tmpnam 만큼의공간으로 파일 이름을 저장.( 배열 선언 ) ☞ NULL : 시스템이 정한 공간에 파일 이름을 저장하고 그 주소를 반환.

  41. Standard Library I/O tempnam 특정 디렉토리에서 유일한 임시 파일을 만든다. ( 오류 시 NULL문자열을, 성공 시 새로운 임시 파일을 반환 ) ☞ Prototype #include<stdio.h> char *tempnam(const char *directory, const char *prefix); ㆍdirectory : 사용자가 정의한 디렉토리 ㆍprefix : 5자이내의 접두어 ☞생성하고자 하는 파일의 경로와 접두어 지정

  42. Standard Library I/O 표준 I/O Library Buffering ☞ 목적 ㆍ파일 접근 횟수와 내부 시스템 접근 횟수를 최소화 ☞ 종류 ㆍFully Buffered : 버퍼가 꽉 찬 경우에 실질적인 입출력이 이루어 진다. ㆍLine Buffered : \n 문자에 의해 입출력이 이루어 진다. ( 표준 입력, 표준 출력의 터미널 ) ㆍUnbuffered : Application과 파일 사이에 버퍼를 사용하지 않는다. ( 표준 에러 )

  43. Standard Library I/O setbuf 표준 I/O 라이브러리가 보통때 할당하는 버퍼 대신 새롭게 정의한 버퍼를 사용하도록 해준다.( 오류 시 0이 아닌값을, 성공시 1을 반환 ) ☞ Prototype #include<stdio.h> void setbuf(FILE *fp, char *buf); ㆍfp : file pointer ㆍbuf : -fp가 사용할 버퍼의 pointer buf == NULL : 버퍼를 사용하지 않는다. buf != NULL : 시스템이 할당한 버퍼는 해제되고 프로그램에서 정의한 BUFSIZE(x)만큼의 char 배열을 버퍼로 사용한다. ☞스트림(stream)이 개방된 후 입출력 연산 수행전에 호출되는 함수로 버퍼의 관리기법을 변경한다. ( 버퍼 사용을 on/off ) ☞버퍼단위 입출력을 사용한다.

  44. Standard Library I/O setvbuf Setbuf보다 더 정밀한 제어를 가능하게 해준다.( 오류 시 0이 아닌값을, 성공시 1을 반환 ) ☞ Prototype #include<stdio.h> int setvbuf(FILE *fp, char *buf, int mode, size_t size); ㆍfp : filepointer ㆍbuf : fp가 사용할 버퍼의 포인터 buf == NULL : 라이브러리 함수에서 적당한 크기 할당. buf != NULL : size만큼의 사용자 공간 사용. ㆍmode : 버퍼링방법 _IOFBF : Fully Buffered _IOLBF : Line Buffered _IONBF : Unbuffered ㆍsize : 사용될 버퍼의 크기 ☞ 버퍼링의 타입을 결정할 수 있고 buf의 크기를 정의 할수 있어 setbuf()보다 정교하다. ☞ FILE 구조체의 _flag를 통해 현재 버퍼링 상태를 알 수 있다.(fp->_flag & IOLBF)의 연산 결과가 1이면 라인버퍼 상태.

  45. Standard Library I/O fflush 파일 스트림의 입출력 버퍼를 비운다.( 성공시 0을 반환 ) ☞ Prototype #include<stdio.h> int fflush(FILE *fp); ㆍfp : file pointer ☞쓰지 않은 데이터는 쓰기가 수행되고, 읽지 않은 데이터는 비워진다. ☞ 라이브러리 버퍼의 내용을 해당 파일에 즉시 쓰게 하는 역할. ☞ prompt 처럼 \n이 없는 문자열을 즉각 출력 시키는데 유용.

  46. Embedded Linux Programming File Status &Directory

  47. File Status & Directory UNIX System File 시스템에 따라 약간의 차이가 있음. ☞ Stat 구조체 #include<sys/types.h> struct stat{ mode_t st_mode; // file type & permission ino_t st_ino; nlink_t st_nlink; // link count uid_t st_uid; gid_t st_gid; dev_t st_rdev; off_t st_size; time_t st_atime; // last access time_t st_mtime; // last modification time_t st_ctime; // last file status change long st_blksize; long st_blocks; }

  48. File Status & Directory File Type ☞ 정규 파일(RegularFile) ㆍ데이터를 포함하는 가장 일반적인 file type. ㆍText 또는 Binary 인지를 커널은 구분하지 않고, Application이 책임. ☞ 디렉토리 파일(Directory File) ㆍ파일의이름과해당 파일의 정보를 가지고 있는 곳을 가리키는 포인터로 구성. ☞ 블록특수 파일(Block Special File) ㆍ시스템에 장착된 장치를 가리키는 파일로, I/O 수행시 일정 크기 데이터 전송. ☞ 문자특수 파일(Character Special File) ㆍ시스템에 장착된 장치를 가리키는 파일로, I/O 수행시 임의 크기 데이터 전송. ☞ FIFO(Block Special File) ㆍIPC 메커니즘의 일종으로 프로세스간 통신에 사용.(일명 Named Pipe) ☞ 심볼릭 링크(Symbolic Link File) ㆍ다른 파일을 가리키는 포인터 역할하는 파일. ☞ 소켓(socket) ㆍ네트워크를 통한 프로세스간 통신에 사용되는 파일.

  49. File Status & Directory 파일형태(st_mode) ☞ S_ISREG(mode) : 정규 파일 ☞ S_ISDIR(mode) : 디렉토리파일 ☞ S_ISCHR(mode) : 문자 특수 파일 ☞ S_ISBLK(mode) : 블록 특수 파일 ☞ S_ISFIFO(mode) : pipe 또는 FIFO ☞ S_ISLNK(mode) : 심볼릭링크 ☞ S_ISSOCK(mode) : 소켓 ☞ 파일의 형태(Type)을검사하는 매크로 기능 ☞해당 종류의 파일이면 1, 아니면 0을 리턴.

  50. File Status & Directory 파일 접근허가 모드 ☞ 파일의 permission user : 사용자 Group : 그룹 Other : 관리자 Next ▶

More Related