pipe():創建一個新的匿名管道
例子中子進程必須等待父進程寫入管道之後才能讀。
thePipe[0]代表管道的輸出,應用程序讀它。
thePipe[1]代表管道的輸入,應用程序寫它。
[cpp]
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <wait.h>
#define MAX_LINE 80
int main()
{
int thePipe[2], ret;
char buf[MAX_LINE+1];
const char *testbuf = {"a test string."};
if(pipe(thePipe) == 0)
{
if(fork() == 0) //子進程
{
ret = read(thePipe[0], buf, MAX_LINE);
buf[ret] = 0;
printf("Child read %s\n", buf);
}
else //父進程
{
ret = write(thePipe[1], testbuf, strlen(testbuf));
ret = wait(NULL);
}
}
}
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <wait.h>
#define MAX_LINE 80
int main()
{
int thePipe[2], ret;
char buf[MAX_LINE+1];
const char *testbuf = {"a test string."};
if(pipe(thePipe) == 0)
{
if(fork() == 0) //子進程
{
ret = read(thePipe[0], buf, MAX_LINE);
buf[ret] = 0;
printf("Child read %s\n", buf);
}
else //父進程
{
ret = write(thePipe[1], testbuf, strlen(testbuf));
ret = wait(NULL);
}
}
}