星期二, 3月 21, 2006

pipe - 開啟無名管線

pipe 建立管線(沒有名字的管線)。
       #include <unistd.h>

int pipe(int filedes[2]);
傳入的是兩個file handle。
pipe( )會開啟一個pipe。

將read handle給filedes[0].
將write handle給filedes[1].

#include <unistd.h>

main()
{
int filedes[2];
char buf[80];
char s[]="Hello\n";

if( vfork() == 0) { // child
write(filedes[1], s, sizeof(s));
}else{
read(filedes[0],buf,80);
printf("%s",buf);
}

exit(0);
}
使用vfork要注意,child 會先執行,而且未結束前不會執行parent process。
使用vfork時,要用exit(0)正確關閉pipe。否則會出現error。

pipe開啟無名管線。有名子的要用mkfifo.

沒有留言:

網誌存檔