Linux 운영 체제는 모든 것이 파일이라는 개념을 고수합니다. 거의 모든 파일 장치는 일련의 시스템 호출, 즉 open()/close()/write()/read() 등으로 작동할 수 있습니다. 시스템 호출은 운영 파일의 C 라이브러리 호출과 유사합니다. Linux와 함께 제공되는 매뉴얼이 가장 권위 있는 매뉴얼입니다. 매뉴얼을 확인하여 시스템 호출 사용법을 확인하십시오.
코드명—— 의미
1 —— 쉘 환경에서 사용자가 조작/실행할 수 있는 명령
2 —— 커널
3 —— 일반적으로 사용되는 일부 함수 및 함수 라이브러리, 대부분의 C 함수 라이브러리
4 —— 장치 파일에 대한 설명, 일반적으로 /dev 아래의 장치
5 —— 구성 파일 또는 특정 파일의 형식
6 —— 게임
7 —— Linux 파일 시스템, 네트워크 프로토콜 등의 관리 및 프로토콜
8 &mdash ;— 시스템 관리자가 사용할 수 있는 명령
9 —— 커널 관련 파일
시스템 헤더 파일은 일반적으로 Linux 디렉토리의 /usr/include
에 저장됩니다. 아래에 포함된 헤더 파일 중 일부에는 실제로 include/usr/include
目录下;下面包含的一些头文件有的带了sys,其实是include底下的子目录中的头文件
open()——打开或者创建一个文件
返回值类型: int——文件描述符fd,每打开一个文件,就会得到一个文件描述符,这个文件描述符是整形的,我们通过文件描述符进行读写操作。
失败:-1
成功:>= 0,即文件描述符;
mode_t是一个类型别名,实际上就是一个有符号的整数,对open函数而言,仅仅当创建新文件时才使用第三个参数
flag:打开标志
注意: 这些其实都是定义的一些宏,当需要使用到多个参数时,使用按位或“ |
”构成多个flag参数
也可跟随下面的方式一起使用:
其他不一一介绍,需要使用时自查。
write()
返回值:
若成功为已经写入的字节数;
若出错为-1;
注意:计划写入的字节数和函数的返回值不相等时,表示写入出现了错误,可以用来检验写入是否成功;
参数:
fd
:写入文件的文件描述符;buf
:存放待写数据的缓存;count
:要求写入一次数据的字节数;
注意:
对于普通文件,写操作从文件的当前位移量处开始,若如果在打开该文件时,指定了O_APPEND选择项,则在每次写操作之前,将文件位移量设置在文件的当前结尾处。在一次成功写之后,该文件位移量增加实际写的字节数。
read()
返回值 :读到的字节数
若已到文件尾为0;若出错为-1;
参数
fd
:读取文件的文件描述符;buf
:存放读取数据的缓存;-
open() 아래 하위 디렉터리에 있는 헤더 파일인 sys가 포함되어 있습니다. 파일을 열거나 생성하세요count

반환 값 유형: int——파일 설명자 fd, 파일을 열 때마다 , 파일 설명자를 얻게 됩니다. 이 파일 설명자는 정수입니다. 파일 설명자를 통해 읽기 및 쓰기 작업을 수행합니다.
Failure: -1
|
를 사용하세요. "다중 플래그 매개변수 구성🎜🎜은 다음과 같은 방법으로도 사용할 수 있습니다: 🎜🎜



fd: 작성된 파일의 파일 설명자 🎜🎜🎜 🎜<code>buf
: 작성할 데이터를 저장하기 위한 캐시 🎜🎜🎜🎜count
: 필요한 바이트 수 🎜🎜🎜🎜🎜참고: 🎜🎜🎜 일반 파일의 경우 파일을 열 때 O_APPEND 옵션을 지정하면 파일 오프셋이 현재 오프셋으로 설정됩니다. 각 쓰기 작업 전 파일의 끝입니다. 쓰기가 성공한 후 파일 오프셋은 실제로 쓰여진 바이트 수만큼 증가합니다. 🎜🎜read()🎜🎜
fd
: 파일 읽기를 위한 파일 설명자 🎜🎜🎜🎜buf
: 읽은 데이터를 저장하기 위한 캐시 🎜🎜🎜🎜count
: 바이트 데이터를 한 번 읽어야 합니다. 반환 값은 읽은 실제 바이트 수이며 동일하지 않습니다. 🎜🎜🎜🎜🎜참고: 🎜읽기 작업은 파일의 🎜현재 변위🎜에서 시작됩니다. 성공적으로 반환되기 전에 변위는 실제 읽은 바이트 수만큼 증가합니다(이 변위는 직접 설정할 수 있음).참고: 프로세스가 종료되면 프로세스가 열었던 모든 파일이 커널에 의해 자동으로 닫힙니다.
참고: 이러한 캐싱 없는 함수는 모두 커널에서 제공하는 시스템 호출입니다. 이는 표준 C의 일부가 아니라 POSIX의 구성 요소입니다. .
표준 C는 FILE 구조 포인터에서 작동하여 파일 구조 포인터에서 작동하며 여기서는 파일 설명자가 사용됩니다.
파일 설명자의 범위는 0-OPEN MAX입니다. 초기 Unix에서 채택한 상한은 19였습니다(즉, 각 프로세스는 20개의 파일을 열 수 있습니다). 이제 많은 시스템이 곧 63으로 늘어날 것입니다. Linux는 1024입니다. 많은 것이 구체적인가요?
파일 설명자 및 파일 포인터
FILE *fdopen(int fd, const char *mode), 파일 설명자를 파일 포인터로 변환
int fileno(FILE * 스트림), 파일 포인터를 파일 설명자로 변환합니다.
열린 파일 찾기
off_t lseek(int fd,off_t offset,int whence);
fd
: 열린 파일에 대한 설명
offset
: 변위량;fd
:已经打开的文件描述符;offset
:位移量;whence
:定位的位置,即基准点SEEK_SET
:将该文件的位移量设置为距文件开始处offset个字节;SEEK_CUR
:将该文件的位移量设置为其当前值加offset,offset可正可负;SEEK_END
-
whence
: 위치 지정 위치, 즉 기준점 -
SEEK_SET
: 파일의 시작 부분부터 오프셋 바이트로 파일의 오프셋을 설정합니다.
SEEK_CUR
: 파일의 오프셋을 현재 값에 오프셋을 더한 값으로 설정합니다. 오프셋은 양수 또는 음수일 수 있습니다. SEEK_END
: 파일 길이에 오프셋을 더한 값으로 파일의 변위를 설정합니다. 오프셋은 양수 또는 음수일 수 있습니다(이때 양수 값인 경우 구멍 파일과 관련되어 있음). 아래 설명 참조);
lseek 함수를 사용하여 파일 설명자가 파이프나 FIFO를 참조하는 경우 lseek는 -1을 반환하고 errno를 EPLPE로 설정합니다.
hole 파일 예:
#include<stdio.h> #include<fcntl.h> #include<string.h> #include<stdlib.h> #include<unistd.h> #include<errno.h> //生成空洞文件 char *buffer = "0123456789"; int main(int argc,char *argv[]) { if(argc < 2) { fprintf(stderr,"-usage:%s [file]\n",argv[0]); exit(1); } int fd = open(argv[1],O_WRONLY | O_CREATE | O_TRUNC,0777); if(fd < 0) { perror("open error"); exit(1); } size_t size = strlen(buffer) * sizeof(char); //将字符串写入到空洞文件中 if(write(fd,buffer,size) != size) { perror("write error"); exit(1); } //定位到文件尾部的10个字节处 if(lseek(fd,10L;SEERK_END) < 0) { perror("lseek error"); exit(1); } //从文件尾部的10个字节处再写入字符串 if(write(fd,buffer,size) != size) { perror("write error"); exit(1); } close(fd); return 0; }
more 명령을 사용하여 파일 내용을 보면 표시된 내용이 한 번만 작성한 결과임을 알 수 있습니다. -c 명령을 사용하여 파일의 ASSCI 코드를 보면 두 내용 사이에 10개의 내용이 있음을 알 수 있습니다.
새 파일을 엽니다
원본 바이너리 파일의 일부를 읽어서 새 파일에 씁니다
읽기가 완료될 때까지 반복적으로 읽고 쓰기
그리고 쓰기가 끝나면 중지합니다. ) == 0은 루프를 중지하는 조건으로 사용됩니다. 읽을 수 없으면 완료된 것입니다. 】
완전 복사
복사 완료
파일, 포크의 하위 프로세스가 상위 프로세스와 액세스를 공유할 수 있습니까?
파일을 열 때마다 구조체 파일과 같은 구조가 커널에서 생성되어 열린 파일을 나타내고 다음 정보를 기록합니다.
파일 오프셋(0부터 시작, 파일 포인터 오프셋 데이터가 기록됨)
참조 횟수(여러 프로세스가 이 열린 파일을 사용하고 있음)
inode 노드(프로세스의 속성 정보 저장: 누가 생성했는지, 이름은 무엇인지, 디스크는 어디에 있는지) 저장된? 이 inode 노드를 통해 해당 특정 파일을 찾을 수 있습니다)
열기 방법: 읽기 전용 모드, 쓰기 전용 모드 등
테스트 1: 파일을 먼저 열고 포크
close(fd)는 가장 바깥쪽에 쓰여 있으며, 부모 프로세스와 자식 프로세스가 모두 닫힐 때마다 참조 횟수가 0이 될 때까지 1씩 감소합니다.
실행 결과는 다음과 같습니다.
이유는 다음과 같습니다.
테스트 2: 먼저 포크한 후 파일을 엽니다
코드를 수정한 후 실행 결과는 다음과 같이 변경됩니다. :
부모 프로세스와 자식 프로세스가 분리되어 있기 때문에 이후에는 각각의 파일이 열리고, 각각의 구조체 파일이 생성되며, 파일 오프셋은 더 이상 공유되지 않습니다.
실제 애플리케이션 시나리오에서는 주로 상위 프로세스와 하위 프로세스에서 연 파일을 사용하여 이 양식에 액세스합니다.
위 내용은 Linux 운영 파일의 기본 시스템을 호출하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이 기사에서는 분석을 위해 데비안 시스템에서 문자열 데이터를 사용하는 방법에 대해 설명합니다. "Debiantrings 데이터 분석"을위한 특수 도구 나 방법을 찾지 못했지만 이러한 유형의 데이터를 처리하기 위해 몇 가지 일반적인 데이터 분석 기술 및 도구를 사용할 수 있습니다. 데이터 분석 방법 및 도구 데비안 시스템의 문자열 데이터는 로그 파일, 구성 파일 또는 프로그램 출력과 같은 다양한 파일에 존재할 수 있습니다. 효과적인 분석을 수행하려면 적절한 도구와 방법을 선택해야합니다. 데이터 추출 : 먼저 관련 파일에서 문자열 데이터를 추출해야합니다. 필터링 및 추출을 위해 grep, awk, sed 등과 같은 명령 줄 도구를 사용할 수 있습니다. 예를 들어, Grep-Oe '[a

이 기사는 데비안 시스템에서 Node.js 응용 프로그램을 안정적으로 실행하는 방법을 소개하고 일련의 모범 사례를 제공합니다. 1. Nodesource 저장소를 사용하여 최신 안정 버전을 얻는 것이 좋습니다. 먼저 리포지토리를 추가하십시오 : Curl-FSSLHTTPS : //deb.nodesource.com/setup_14.x | sudo-ebash-and-and install node.js 및 npm : sudoapt-getinstallnodejs 설치가 완료되면 다음 명령을 사용하여 다음 명령을 사용하여 다음 명령을 사용하십시오.

이 기사에서는 데비안 시스템에서 Node.js 애플리케이션을 실행하기위한 로그 회전 전략에 대해 논의하고 로그 파일의 크기와 수량을 효과적으로 관리하고 과도한 디스크 공간을 피하고 로그 아카이브 및 분석 프로세스를 단순화하기위한 것입니다. 로그 회전 메소드는 node.js 로그 라이브러리를 사용합니다. 많은 인기있는 node.js 로그 라이브러리 (예 : Winston, Bunyan 및 Pino)에는 내장 로그 회전 기능이 있으며 구성을 통해 쉽게 구현할 수 있습니다. 예를 들어, Winston 라이브러리의 회전 파일 핸들러는 로그 파일 크기와 수량 제한을 설정할 수 있습니다. 구성 파일 예제 (Winston) : constwinston = require ( 'wi

이 기사는 Debian Systems에서 Go Language Application Logs를 볼 수있는 몇 가지 방법을 소개합니다. 방법 1 : JournalCTL 명령 사용 GO 애플리케이션이 SystemD 서비스 형식으로 실행되면 JournalCTL 명령을 사용하여 로그를 볼 수 있습니다. 귀하의 서비스가 My-Go-App이라고 가정하면 다음 명령을 사용하십시오. Sudojournalctl-umy-go-appjournalctl 명령은 또한 마지막 시작의 로그보기 : sudojournalctl-b의 로그를 보거나 특정 기간의 로그를 보는 것과 같은 여러 옵션을 지원합니다.

데비안 시스템에서 Node.js 성능 메트릭을 모니터링하려면 다양한 도구와 방법을 사용할 수 있습니다. 다음은 일반적으로 사용되는 몇 가지 방법과 도구입니다. 간단한 모노리아링 모니터 사용은 node.js를 기반으로 한 성능 모니터링 솔루션, Node.js 프로세스 및 시스템 표시기, 오류 로그 디스플레이 및 종속성, NPM 모듈 보안 위험 경고, 사용자 지능형 운영 및 유지 보수 경보 및 온라인 프로세스의 실시간 상태 내보내기를 제공하는 NODE.JS 성능 모니터링 솔루션입니다. NetDA 사용

Debian 시스템에 Go Language Log Management 도구를 통합하십시오. 단계는 다음과 같습니다. 1. 먼저 Go 로케일을 설치하십시오. 먼저 Debian 시스템이 설치되어 있는지 확인하십시오. 설치되지 않은 경우 다음 명령을 실행하십시오. sudoaptupdatesudoaptinstallgolang-go 검증 설치 : Goversion 2. 로깅 도구 선정 언어에는 Logrus, Zap, Zerolog 등과 같은 다양한 로깅 도구가 있습니다. 3. Goget 명령을 사용하여 Logrus를 설치하여 설치하십시오 : Gogetgithub.com/sirupsen/logrus iv. 구성 l

이 기사에서는 Golang 로깅 메커니즘을 사용하여 데비안 시스템의 성능을 향상시키는 방법에 대해 설명합니다. 우리는 점차 최적화 전략을 세분화하고 샘플 코드를 제공 할 것입니다. 1. 효율적인 로깅 전략 정제 된 로그 레벨 : 튜닝 대상에 따라 적절한 로그 레벨 (정보, 디버그, 오류 등)을 선택합니다. 중복 로그를 피하고 I/O 부하를 줄입니다. 로그 회전 및 보관 : 단일 파일의 성능 및 저장에 과도한 영향을 방지하기 위해 정기적으로 세그먼트 및 아카이브 로그 파일. 2. 동시 로그 처리 Goroutine 동시성 : Golang의 Goroutine을 사용하여 효율성을 향상시키기 위해 동시 로그 쓰기를 구현하십시오. Goroutine 수량 제어 : 채널 또는 기타 메커니즘을 사용하여 제한

데비안 시스템에서 Golang 응용 프로그램의 로그 레벨을 구성하려면 다음 단계를 따라야합니다. 로그 라이브러리 선택 : 먼저 적절한 로그 라이브러리를 선택하십시오. Go Standard Library의 로그 패키지는 사용하기 쉽고 Logrus 및 Zap과 같은 타사 라이브러리는보다 강력한 기능과 성능을 제공합니다. 로그 레벨 설정 : 선택한 로그 라이브러리에 따라 해당 로그 레벨을 설정하십시오. 다른 라이브러리의 설정은 다양합니다. 표준 라이브러리 로그 표준 라이브러리를 사용하는 로그 패키지는 로그 레벨을 직접 지원하지 않지만 사용자 정의 출력 형식으로 시뮬레이션 할 수 있습니다. 다음 예제는 사전 설정 수준에 따라 출력을 제어하는 방법을 보여줍니다. PackagemainImport ( "log" "OS"


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.
