>  기사  >  운영 및 유지보수  >  Linux 파일 작업

Linux 파일 작업

坏嘻嘻
坏嘻嘻원래의
2018-09-13 18:24:561913검색

이 문서의 예에서는 Python 파일 읽기 및 쓰기 작업과 Linux 셸 변수 명령을 대화형으로 실행하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

파일 작업 관련 시스템 호출

Create

int creat(const char *filename, mode_t mode);
매개변수 mode는 새로 생성된 파일에 대한 액세스 권한을 지정하며, umask와 함께 파일의 최종 권한(mode&umask)을 결정합니다. 여기서 umask는 파일이 생성될 때 제거해야 하는 일부 액세스 권한을 나타냅니다. 호출하는 함수는 int umask(int newmask)입니다.

Open

int open(const char *pathname, int flags);
pathname은 열려고 하는 파일 이름입니다(경로 이름 포함, 기본값은 현재 경로 아래에 있음)

flags open 플래그

  • O_RDONLY 읽기 전용 모드로 파일 열기


  • O_WRONLY 파일을 쓰기 전용 모드로 열기


  • O_RDWR 읽기-쓰기 모드로 파일 열기


  • O_APPEND 추가용 파일 열기


  • O_CREAT 파일 만들기


  • O_EXEC O_CREAT를 사용하고 파일 이미 존재하면 오류가 발생합니다


  • O_NOBLOCK 비차단 방식으로 파일 열기


  • O_TRUNC 파일이 이미 존재하는 경우 파일 내용 삭제

int open (const char * 경로명 , int 플래그, mode_t 모드)

플래그가 O_CREATE인 경우 모드 플래그를 지정하여 파일 액세스 권한을 나타냅니다.

  • S_IRUSR 사용자가 읽을 수 있음


  • S_IWUSR 사용자가 쓸 수 있음


  • S_IXUSR 사용자 실행 가능


  • S_IRWXU 사용자 읽기, 쓰기, 실행 가능


  • S_IRGRP 그룹 읽기 가능


  • S_IWGRP 그룹 쓰기 가능


  • S_IXGRP 그룹 실행 가능


  • S_IRWXG 그룹 읽기, 쓰기, 실행 가능


  • S_IROTH 다른 사람들도 읽을 수 있음


  • S_IWOTH 기타 사용자는 쓰기 가능


  • S_IXOTH 기타 사용자는 실행할 수 있음


  • S_IRWXO 기타 사용자는 읽기, 쓰기, 실행 가능


  • S_ISUID 세트 사용자의 실행 ID


  • S_ISGID 그룹의 실행 ID 설정

mode 플래그는 숫자를 사용하여 파일 권한을 나타낼 수도 있습니다.

각 숫자는 1(실행 권한), 2( 쓰기 권한), 4(읽기 권한), 0(없음) 또는 이들 값의 합계입니다.

  • 첫 번째 숫자는 사용자 ID 설정


  • 두 번째 숫자는 그룹 ID 설정


  • 세 번째 숫자는 사용자 고유 권한


  • 네 번째 숫자는 그룹의 권한을 나타냅니다


  • 다섯 번째 숫자는 다른 사람의 권한을 나타냅니다

open("test", O_CREAT, 10705);
위 진술은 동등하다 대상:
open("test", O_CREAT, S_IRWXU | S_IROTH | S_IXOTH | S_ISUID );

읽기 및 쓰기

int read(int fd, const void *buf, size_t length);
int write(int fd , const void *buf, size_t length);

매개변수 fd 파일 설명자, buf는 버퍼에 대한 포인터, length는 버퍼의 크기(바이트 단위), 반환 값은 실제로 읽고 쓴 바이트 수입니다. .

  • read()는 파일 설명자 fd가 지정한 파일에서 buf가 가리키는 버퍼로 length 바이트를 읽습니다. 반환 값은 읽은 실제 바이트 수입니다.


  • write() 구현 buf가 가리키는 버퍼의 length 바이트를 파일 설명자 fd가 가리키는 파일에 쓰고 반환 값은 실제로 쓴 바이트 수입니다.

Positioning

임의의 파일에 대해 읽고 쓸 위치를 무작위로 지정할 수 있습니다.

int lseek(int fd, offset_t offset, int whence);


lseek()는 파일 읽기 및 쓰기 포인터를 이동합니다. whence(음수일 수 있음) 바이트를 기준으로 한 오프셋입니다. 작업이 성공하면 파일 헤더를 기준으로 한 파일 포인터의 위치가 반환됩니다.

매개변수 whence는 다음 값을 사용할 수 있습니다.

SEEK_SET: 파일의 시작 부분을 기준으로 합니다.

SEEK_CUR: 상대 파일 읽기 및 쓰기 포인터의 현재 위치입니다.
SEEK_END: ​​​​파일의 끝을 기준으로 합니다.


Close

int close(int fd);

C 라이브러리 함수 파일 작업 - 특정 운영 체제 플랫폼과 무관

생성 및 열기

FILE *fopen(const char *path, const char *mode );

fopen()은 지정된 파일 filename 열기를 구현합니다. 여기서 mode는 열기 모드입니다. Linux 시스템은 바이너리 파일과 텍스트 파일을 구분하지 않습니다.


mode 값

    r, rb는 읽기 전용 모드로 열립니다.

  • w, wb는 쓰기 전용 모드로 열립니다. 파일이 없으면 파일이 생성되고, 없으면 파일이 잘립니다
  • a, ab는 추가 모드로 열립니다. 파일이 없으면 파일을 생성하세요


  • r+, r+b, rb+ 읽기 및 쓰기로 열기


  • w+, w+b, wh+ 읽기로 열기 그리고 Open을 씁니다. 파일이 없으면 새 파일이 생성되고, 그렇지 않으면 파일이 잘립니다.


  • a+, a+b, ab+ 읽기 및 추가가 가능합니다. 파일이 없으면 새 파일을 만듭니다

읽고 쓰기

int fgetc(FILE *stream);
int fputc(int c, FILE *stream);
char *fgets(char *s , int n , FILE *stream);
int fputs(const char *s, FILE *stream);
int fprintf(FILE *stream, const char *format, ...);
int fscanf(FILE *stream, const char *format , ...);
size_t fread(void *ptr, size_t size, size_t n, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream);
int fsetpos(FILE *stream, fpos_t *pos);
nt fsetpos(FILE *stream, const fpos_t *pos);
int fseek(FILE *stream, long offset, int whence);

  • fread()는 읽기를 구현합니다. n개의 필드를 스트림하고, 각 필드는 size 바이트이고, 읽은 필드는 ptr이 가리키는 문자 배열에 들어가고, 읽은 실제 필드 수를 반환합니다.


  • write()는 버퍼 ptr이 가리키는 배열에서 n개의 필드를 스트림으로 작성하는 것을 구현합니다. 각 필드의 길이는 바이트 크기이며 실제로 작성된 필드 수를 반환합니다.

Close

int fclose (FILE *stream);

Linux 파일 시스템 디렉토리 구조

Linux 파일 작업

  • /bin----가장 자주 사용되는 기본 명령을 저장합니다. 초 ls, cp, mkdir 등의 파일은 모두 실행 가능합니다. /dev- ---장치 파일 저장 디렉터리, 응용 프로그램은 이러한 파일을 읽고, 쓰고, 제어하여 실제 장치에 액세스할 수 있습니다.


  • /etc----사용자 계정 및 비밀번호 구성 파일과 같이 시스템 관리에 필요한 구성 파일 및 하위 디렉터리입니다.


  • /home----일반 사용자의 홈 디렉터리입니다. 일반적으로 디렉터리 이름은 사용자 계정의 이름을 따서 지정됩니다.


  • /lib----라이브러리 파일 저장 디렉터리, 시스템의 가장 기본적인 동적 링크 공유 라이브러리로 Windows의 DLL 파일과 유사합니다.


  • /lost+found----일반적으로 시스템이 예기치 않게 충돌하거나 컴퓨터가 예기치 않게 종료되면 일부 파일 조각이 생성되어 여기에 배치됩니다.


  • /mnt----다른 파일 시스템을 임시로 마운트하는 것이 편리합니다. 예를 들어 광 드라이브가 /mnt/에 마운트된 경우 광 드라이브의 내용을 볼 수 있습니다. 이 디렉토리를 입력하여


  • media----U 디스크, 광학 드라이브 등과 같은 일부 장치를 자동으로 식별하고 이 디렉토리에 마운트합니다.


  • /opt----호스트에 추가 소프트웨어가 설치되는 디렉터리


  • /proc----운영 체제가 실행될 때 프로세스 및 커널 정보(예: CPU, 하드 디스크 파티션, 메모리 정보 등)가 여기에 저장됩니다. 시스템 메모리의 매핑으로 메모리에 존재하며 이 디렉터리에 직접 접근하여 시스템 정보를 얻을 수 있습니다.


  • /root---최고 권한을 가진 사용자의 홈 디렉터리


  • /sbin----최고 권한을 가진 사용자의 실행 명령이 있는 디렉터리 임시 파일을 저장하려면 이 디렉토리


  • /tmp----에서 명령을 실행하세요.


  • /usr------시스템 응용 프로그램 및 파일(예: 명령 및 도움말 파일)이 프로그램을 저장하는 디렉터리로, Windows의 프로그램 파일 디렉터리와 유사합니다.


  • /var------커널의 로그 파일


  • /sys----

    과 같이 자주 수정되는 디렉토리가 이 디렉토리에 배치됩니다. 장치 트리 직관적인 반영. 커널 개체가 생성되면 해당 파일과 디렉터리도 커널 개체 하위 시스템에 생성됩니다.

  • /initrd---시작 프로세스 중 initrd 이미지가 임시 루트 파일 시스템으로 사용되는 경우 해당 이미지에 대해 /linuxrc를 실행하여 실제 루트 파일 시스템을 마운트한 후 원본 RAM 파일 시스템은 /initrd 디렉토리에 매핑됩니다.

  • Linux 파일 시스템 및 장치 드라이버

    관련 권장 사항:

  • linux 상위 디렉터리 권한은 하위 디렉터리 파일 작업에 영향을 미칩니다.

  • Linux 셸 변수 명령을 사용하여 Python 파일 읽기 및 쓰기 작업을 대화식으로 실행하는 방법

위 내용은 Linux 파일 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.