프로세스 간 통신 # # 리눅스 # 파이프 (파이프) - 표준 흐름 도관 파이프

에서 프로세스 간 통신 # 리눅스 # 번호 파이프 (파이프) - 일반 파이프 라인 파이프 , 우리는 쉽게, 단 하나의 단방향 전송입니다 첫째, 단면이 일반 파이프를 볼 수 있습니다 동안 표준 흐름 도관 익명 파이프 파이프 패키지의 시리즈. 파일 스트림을 돌려줍니다. 그러나 반환 파일 스트림 커서 / 오프셋 (오프셋)를 사용할 수 없습니다 등 등 lseek의로, 관련 기능을 .

버퍼는 다음과 같은 기능 표준 유동관 ​​:

FILE* popen(char* command ,char* type);

명령 뾰족한 끝은 널 종료 문자열 쉘 명령을 포함하는 문자열 및 / 수행 -c 파라미터는 SH / 전송 함, 즉, 쉘 실행;

타입 : 읽기 쓰기 모드로, 상기 한 방향으로 만, 동시에 읽고 쓸 수있다.

  • "R"명령의 표준 출력에 연결된 파일 포인터
  • "W"명령의 표준 입력에 연결된 파일 포인터
int pclose(FILE* stream);

스트림 : 파일 스트림을 닫습니다.

 

는 popen 함수는 실제로 파이프 라인, 다음 단계로 이루어 작품의 일부 포장 작업입니다 :

  1. 파이프 라인 만들기.
  2. 자식 프로세스를 포크.
  3. 부모 - 자식 프로세스 닫기 불필요한 파일 설명.
  4. 함수의 간부 인 가족이라고합니다.
  5. 명령에 지정된 기능을 수행합니다.

 

실행 쉘에서 명령을 다음과 같이 구체적인 사용법은 "경고"| 그렙 | dmesg를  화장실 -l, 그 결과는 파일 스트림의 내용을 읽을 수있는 현재의 과정입니다 F 에 있습니다.

int get_warnings_count(void)
{
	int warnings;
	FILE *f;

	f = popen("dmesg | grep \"WARNING:\" | wc -l", "r");
	fscanf(f, "%d", &warnings);
	fclose(f);

	return warnings;
}

명령과 관련된 동작들의 일부는 쉘 따라서, 표준 유동 도관은 통상적으로 본 ...

 

게시 된 170 개 원래 기사 · 원의 찬양 (207) · 조회수 4,590,000 +

추천

출처blog.csdn.net/xiaoting451292510/article/details/103730980