在linux中,管道也是一種文件,只不過比較特殊,我們可以用pipe函數創建一個管道,其原型聲明如下:
#inlcude
int pipe(int fields[2]) ;
其實它相當於一個通訊緩衝區,fields[0]用來讀,fields[1]用來寫。在下面的例子中,建立一個管道作為通訊緩衝區,父進程創建了一個子進程,子進程通過管道的fields[1]描述符想管道中寫入一個字串,而父進程則利用管道的fields[ 0] 從管道中讀取這個字符串並顯示出來:
#include
#include
#include
#include
#includeh>
#include
#include
#define BUF_SIZ 255 v)
{
char buffer[BUF_SIZ + 1];
int fd[2];
// rece {
fprintf(stderr, "Usage: %s stringna", argv [0]);
exit(1);
}
// create pipe for communication fprintf(stderr, "Create pipe error: %sna", strerror( errno));
exit(1);
}
if ( fork() == 0 {
close(fd[0]);
printf("Child %ld write to pipena", getpid());
snprintf(buffer, BUF_SIZ, "%s", argv[1])); printf("Child % ld quit.na", getpid());
}
else // in parent process, fd[1]);
printf("Parent %ld read from pipena", getpid( ));
memset(buffer, '