운영 체제 의 파이프 통신
친연 관 계 를 가 진 프로 세 스 간 통신 에 만 pipe () 를 사용 하여 이름 없 는 파 이 프 를 만 들 수 있 습 니 다.
헤더 파일\# include
read () 와 write () 를 사용 하여 무명 파 이 프 를 조작 할 수 있 습 니 다 int fd [2].pipe(fd); ***pipe 는 파 이 프 를 만 들 고 fd [0] 는 이름 없 는 파이프 의 읽 기 단 을 가리 키 며 수신 프로 세 스 (시스템 호출 read (fd [0], buf, size) 를 실현 합 니 다. 파이프 출구 fd [0] 에서 size 문 자 를 읽 는 메 시 지 를 buf 에 넣 습 니 다.fd [1] 는 이름 없 는 파이프 의 쓰기 단 을 가리 키 며 전송 프로 세 스 (파일 시스템 을 이용 한 시스템 호출 write (fd [1], buf, size) 를 실현 하고 buf 의 길 이 를 size 문자 로 하 는 메 시 지 를 파이프 입구 fd [1] 로 보 냅 니 다. * * * * *
⚠️무명 파이프 에 중대 한 제한 이 있 습 니 다!이름 이 없 으 며 친연 관 계 를 가 진 프로 세 스 간 통신 에 만 사용 할 수 있 으 며 프로 세 스 가 끝 난 후 이름 없 는 파이프 가 자동 으로 사라 집 니 다.
유명한 파이프
!!!이름 생 겼 어!유명한 파 이 프 는 이름 없 는 파 이 프 를 개선 하 는 유명한 파 이 프 를 선진 선 출 대기 열 (FIFO) 이 라 고도 부 르 며 파일 시스템 에 존재 하 는 특수 파이프 로 파일 이름 이 있 으 며 파일 을 통 해 통신 한다.그것 은 다음 과 같은 특징 을 가지 고 있다.
유명한 파이프 생 성
유명 파 이 프 는 이름 을 아 는 모든 프로 세 스 에 의 해 열 리 고 사용 할 수 있 습 니 다.유명한 파 이 프 를 이용 하여 통신 을 하려 면 통신 쌍방 이 먼저 유명한 파 이 프 를 만 들 고 그 한쪽 과 연결 해 야 파 이 프 를 열 어 읽 고 쓸 수 있다.유명 파이프 에 대응 하 는 파일 이 더 이상 필요 하지 않 을 때 삭 제 를 표시 해 야 합 니 다.유명한 파 이 프 를 만 드 는 두 가지 방법 이 있 습 니 다.
1. mkfifo
mkfifo fifoname
매개 변수 설명: fifoname 은 만 들 유명한 파이프 의 이름 입 니 다.헤더 파일\# include\# include\# include 시스템 호출 형식: int mkfifo (const char * pathname, mode t mode);매개 변수 설명: * * pathname * * * 는 문자열 포인터 로 일반적인 경로 이름 으로 생 성 된 유명한 파 이 프 를 저장 하 는 파일 이름 입 니 다. * * * *mode * * * 는 권한 값 으로 만 든 유명한 파이프 파일 의 액세스 권한 을 지정 합 니 다.매개 변수 mode 는 다음 과 같은 조합 이 있 습 니 다: • SIRWXU: 즉 00700 권한 은 이 파일 소유자 가 읽 기, 쓰기, 실행 가능 한 권한 을 가 진 다 는 것 을 의미 합 니 다.S_IRUSR 또는 SIREAD: 즉 00400 권한 은 이 파일 소유자 가 읽 을 수 있 는 권한 을 가 진 다 는 것 을 의미 합 니 다.S_IWUSR 또는 SIWRITE: 즉 00200 권한 은 이 파일 소유자 가 기록 할 수 있 는 권한 을 가 진 다 는 것 을 의미 합 니 다.S_IXUSR 또는 SIEXEC: 즉 00100 권한 은 이 파일 소유자 가 실행 가능 한 권한 을 가 진 다 는 것 을 의미 합 니 다.S_IRWXG: 즉 00070 권한 은 이 파일 사용자 그룹 이 읽 을 수 있 고 쓸 수 있 으 며 실행 가능 한 권한 을 가 진 다 는 것 을 의미 합 니 다.S_IRGRP: 즉 00040 권한 은 이 파일 사용자 그룹 이 읽 을 수 있 는 권한 을 가 진 다 는 것 을 의미 합 니 다.S_IWGRP: 즉 00020 권한 은 이 파일 사용자 그룹 이 기록 할 수 있 는 권한 을 가 진 다 는 것 을 의미 합 니 다.S_IXGRP: 즉 00010 권한 은 이 파일 사용자 그룹 이 실행 가능 한 권한 을 가 진 다 는 것 을 의미 합 니 다.S_IRWXO: 즉 00007 권한 은 다른 사용자 가 읽 기, 쓰기, 실행 가능 한 권한 을 가 진 다 는 것 을 의미 합 니 다.S_IROTH: 즉 00004 권한 은 다른 사용자 가 읽 을 수 있 는 권한 을 가 진 다 는 것 을 의미 합 니 다.S_IWOTH: 즉 00002 권한 은 다른 사용자 가 기록 할 수 있 는 권한 을 가 진 다 는 것 을 의미 합 니 다.S_IXOTH: 즉 00001 권한 은 다른 사용자 가 실행 가능 한 권한 을 가 진 다 는 것 을 의미 합 니 다. * * *반환 값: * * 0, 오류 반환 - 1.
2. mknod
mknod fifoname p
매개 변수 설명: fifoname 은 만 들 유명한 파이프 의 이름 입 니 다. 매개 변수 p 는 이 파일 이 파이프 파일 임 을 표시 합 니 다.헤더 파일:\# include\# include\# include 시스템 호출 형식: int mknod (const char * pathname, mode t mode, dev t dev); * * * *매개 변수 설명: * * pathname 은 문자열 포인터 로 일반적인 경로 이름 으로 생 성 된 유명한 파이프 의 파일 이름 을 저장 합 니 다.dev 는 파일 이 있 는 장치 입 니 다. 유명한 파이프 에 대해 매개 변수의 값 은 0 입 니 다.mode 는 유명한 파 이 프 를 만 드 는 모드 입 니 다. 만 든 유명한 파이프 파일 의 액세스 권한 을 지정 합 니 다. 값 의 의 미 는 mkfifo () 의 인자 와 같 습 니 다.하지만 파이프 파일 을 만 들 형식 을 특별히 밝 혀 야 합 니 다: SIFIFO 또는 010. 반환 값: 0, 오류 반환 - 1.
유명한 파이프 사용
유명 파 이 프 를 만 든 후 자동 으로 열 리 지 않 습 니 다. 시스템 호출 open () 강 에 대응 하 는 파일 을 열 어야 합 니 다.매개 변수 설명: pathname 은 열 려 는 유명한 파이프 의 경로 이름 입 니 다. flags 는 파일 이 열 렸 을 때의 액세스 방식 입 니 다.다음은 매개 변수 flags 의 가능 한 수치 입 니 다. • ORDONLY: 읽 기 전용 으로 파일 열기;O_WRONLY: 파일 만 쓰기 로 열기;O_RDWR: 읽 기와 쓰기 로 파일 열기;반환 값: 유명한 파이프 파일 을 여 는 읽 기 단 이나 쓰기 단 을 여 는 파일 설명자 (int 형식) 를 성공 적 으로 되 돌려 주 었 습 니 다. 호출 에 실패 하면 - 1 로 되 돌려 줍 니 다.
유명한 파이프 삭제
유명 파 이 프 는 프로 세 스 가 끝 난 후에 사라 지지 않 고 일반 파일 과 일치 하 며 디스크 에 존재 합 니 다. 프로 세 스 가 끝 난 후에 유명 파이프 파일 에 저 장 된 통신 정 보 는 통신 의 두 프로 세 스 가 끝 난 후에 자동 으로 분 실 됩 니 다.유명 파 이 프 를 삭제 하려 면 시스템 호출 이 필요 합 니 다 = = unlink () = = 삭제
헤더 파일:\# include
시스템 호출 형식 int unlink (const char * pathname);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
바이너리 파일cat 또는tail, 터미널 디코딩 시 처리 방법cat으로 바이너리 파일을 보려고 할 때 코드가 엉망이 되어 식은땀이 났다. 웹에서 스크롤된 정보의 처리 방법과alias의 설정을 요약합니다. reset 명령을 사용하여 터미널을 재설정합니다.이렇게 하면 고치지 못하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.