>  기사  >  php教程  >  Linux C 프로그래밍 - 파이프

Linux C 프로그래밍 - 파이프

高洛峰
高洛峰원래의
2016-12-13 11:37:191429검색

Linux에서는 파이프도 일종의 파일이지만 특별합니다. 파이프 함수를 사용하여 파이프를 만들 수 있으며 해당 프로토타입은 다음과 같이 선언됩니다.

#inlcude

intpipe(int fields[2]);

사실 통신 버퍼와 동일하며, fields[0]은 읽기용, fields[1] 쓰기에 사용됩니다. 다음 예에서는 파이프가 통신 버퍼로 생성됩니다. 하위 프로세스는 파이프의 fields[1] 설명자를 통해 파이프에 문자열을 쓰고 상위 프로세스는 fields[를 사용합니다. 1] of the Pipe. 0] 파이프에서 다음 문자열을 읽고 표시합니다.

#include
#include
#include < unistd.h>
#include
#include
#include
#include

#define BUF_SIZ 255 // 메시지 버퍼 크기

int main(int argc, char **argv)
{
char buffer[BUF_SIZ + 1];
int fd [2];

// 문자열을 매개변수로 받습니다
if (argc != 2)
{
fprintf(stderr, "사용법: %s stringna", argv[0] );
exit(1);
}

// 통신용 파이프 생성
if (pipe(fd) != 0)
{
fprintf(stderr, "파이프 생성 오류: %sna", strerror(errno));
exit(1);
}

if (fork() == 0) // 자식에서 프로세스 쓰기 메시지를 파이프에 작성
{
close(fd[0]);
printf("하위 %ld 쓰기를 파이프나에 수행", getpid())
snprintf(buffer, BUF_SIZ, "% s", argv [1]);
write(fd[1], buffer, strlen(buffer));
printf("Child %ld quit.na", getpid());
}
else // 상위 프로세스의 파이프에서 메시지를 읽습니다
{
close(fd[1]);
printf("상위 %ld가 Pipena에서 읽음", getpid());
memset(버퍼, '

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