Linux管道程式設計例項

2021-06-14 21:20:28 字數 1454 閱讀 3519

/*管道

可以把管道想象為兩個實體之間的單向聯結器。注意,管道是半雙工的,

如果需要全雙工通訊,應該轉而考慮套接字。

匿名管道又稱管道,提供了乙個程序與它的兄弟程序通訊的方法,只存在于父程序中;

命名管道,可以存在與檔案系統中,任意程序都可找到它,使得不同先祖的程序也可以通訊。

#include int pipe( int dfs[ 2 ] );建立匿名管道

int dup(int oldfd );建立乙個檔案描述符的副本

int dup2(int oldfd, int targetfd);

dup/dup2提供了複製檔案描述符的功能。他們常用於stdin(0)、stdout(1)、stderr(2)的重定向;

#include #include int mkfifo(const char* pathname,mode_t mode );建立乙個命名管道

記住:管道只不過是一對檔案描述符因此所有能夠操作檔案描述符的函式都可用於管道。這些函式

包括但不限於select,read,write,fcntl,freopen。

*//**********1、簡單匿名管道應用************/

#include #include #include #define max_line 80

#define pipe_stdin 0

#define pipe_stdout 1

/* mypipe[ 1 ]向管道寫入資料;mypipe[ 0 ]從管道讀取資料。

*/int main( )

;int ret,mypipe[ 2 ];

char buffer[ max_line+1 ];

//create the pipe

ret=pipe( mypipe ); //pipe( )建立乙個匿名管道

if( ret==0 )

close( thepipe[ 0 ] );

close( thepipe[ 1 ] );

return 0;

}//父子程序間利用管道通訊例項

#include #include #include #include #define max_line 80

int main( )

;if( pipe( thepipe )==0 )

else

}close( thepipe[ 0 ] );

close( thepipe[ 1 ] );

return 0;

}/*值得注意的是:

把子程序的輸出重定向到管道的輸入,父程序的輸入重定向到管道的輸出。

--這是乙個很值得記住的有用技術

*///使用c實現管道鏈結

#include #include #include int main( )

else

}return 0;

}

linux管道程式設計

一 利用管道獲取子程序的輸出 include int main while ret fread buf,1,1023,pp 0 fprintf stdout,n pclose pp return 0 二 利用管道向子程序的輸入資料 沒有想到好的命令,自己寫了如下乙個test程式,該程式從stdin讀...

Linux程式設計 管道

什麼是管道 程序管道 pclose函式 pipe呼叫 父程序和子程序 管道關閉之後的讀操作 對於管道,通常不知道有多少資料可以讀,往往採用輪詢的方式。當沒有資料可以讀時,read呼叫將被堵塞。如果管道的另一端關閉時,read呼叫返回的是0而不是堵塞。fork產生的子程序也會使用者和父程序相同的一對管...

Linux管道pipe使用例項

函式 include int pipe int filedes 2 描述pipe 函式建立乙個管道和指向該管道的一對檔案描述符,並且將檔案描述符儲存到檔案描述符陣列filedes中。其中filedes 0 為讀端,filedes 1 為寫端。返回值0 管道建立成功 1 管道建立失敗,同時errno置...