linux 程序通訊 管道通訊

2021-07-24 01:44:24 字數 4518 閱讀 9123

程序通訊

1、  pipe

函式的作用:建立無名管道

函式的原型:int pipe(int fds[2])

函式的引數:新建的兩個描述符fds陣列返回

fds[0],表示管道的讀取端

fds[1],表示管道的寫入端

返回值:成功:0

出錯:-1;

標頭檔案:#include

2、  mkfifo

函式的作用:建立有名管道

函式的原型:int  mkfifo(const char*filename, mode_t mode)

引數的引數:filename:有名管道的路徑、名稱

mode:管道的方式

o_nonblock : fifo開啟的時候非阻塞

o_rdonly:以唯讀的方式建立

o_wronly:以只寫的方式建立

o_rdwr :以可讀寫的方式建立

返回值:成功:0;

出錯:-1;

3、  kill

函式的作用:傳遞訊號給指定的程序

函式的原型:int  kill(pid_t pid,  int sig)

函式的引數:pid: > 0,指定的程序pid

pid:=0,傳送給目前程序相同程序租的所有程序

pid : -1,廣播給系統的所有的程序

sig :訊號

返回值:成功:0;

失敗:-1;

標頭檔案:#include

#include

4、  raise

函式的作用:傳送訊號給本身

函式的原型:int  raise( int  sig)

標頭檔案:#include

5、  alarm

函式的作用:設定訊號傳送鬧鐘

函式的原型:unsigned int alarm(unsigned int seconds)

返回值:返回之前鬧鐘的剩餘秒數,若之前無鬧鐘,返回0

6、  pause

函式的作用:讓程序暫停知道訊號出現

函式的原型:int pause(void)

返回值:-1;

標頭檔案:#include

7、  singal

函式的作用:設定訊號處理方式

函式的原型:void (*singal) (int signum, void (*handler)(int)))(int)

typedef void(*sighandler_t(int)) sifhandler_t

singal (int signum , sighandler_t handler)

程序通訊學習的總結:

1、  程序通訊有哪幾種方式?

(1)      無名管道:用於父子程序間的通訊

(2)      有名管道:用於同一檔案系統中的任意兩個程序

2、  管道和檔案有什麼區別?

3、  建立管道與建立程序間的關係?

通常,我們要先建立乙個管道,再通過fork函式建立乙個子程序,該子程序會繼承父程序所建立的管道程序通訊

1、  pipe

函式的作用:建立無名管道

函式的原型:int pipe(int fds[2])

函式的引數:新建的兩個描述符fds陣列返回

fds[0],表示管道的讀取端

fds[1],表示管道的寫入端

返回值:成功:0

出錯:-1;

標頭檔案:#include

2、  mkfifo

函式的作用:建立有名管道

函式的原型:int  mkfifo(const char*filename, mode_t mode)

引數的引數:filename:有名管道的路徑、名稱

mode:管道的方式

o_nonblock : fifo開啟的時候非阻塞

o_rdonly:以唯讀的方式建立

o_wronly:以只寫的方式建立

o_rdwr :以可讀寫的方式建立

返回值:成功:0;

出錯:-1;

3、  kill

函式的作用:傳遞訊號給指定的程序

函式的原型:int  kill(pid_t pid,  int sig)

函式的引數:pid: > 0,指定的程序pid

pid:=0,傳送給目前程序相同程序租的所有程序

pid : -1,廣播給系統的所有的程序

sig :訊號

返回值:成功:0;

失敗:-1;

標頭檔案:#include

#include

4、  raise

函式的作用:傳送訊號給本身

函式的原型:int  raise( int  sig)

標頭檔案:#include

5、  alarm

函式的作用:設定訊號傳送鬧鐘

函式的原型:unsigned int alarm(unsigned int seconds)

返回值:返回之前鬧鐘的剩餘秒數,若之前無鬧鐘,返回0

6、  pause

函式的作用:讓程序暫停知道訊號出現

函式的原型:int pause(void)

返回值:-1;

標頭檔案:#include

7、  singal

函式的作用:設定訊號處理方式

函式的原型:void (*singal) (int signum, void (*handler)(int)))(int)

typedef void(*sighandler_t(int)) sifhandler_t

singal (int signum , sighandler_t handler)

程序通訊學習的總結:

1、  程序通訊有哪幾種方式?

(1)      無名管道:用於父子程序間的通訊

(2)      有名管道:用於同一檔案系統中的任意兩個程序

2、  管道和檔案有什麼區別?

3、  建立管道與建立程序間的關係?

通常,我們要先建立乙個管道,再通過fork函式建立乙個子程序,該子程序會繼承父程序所建立的管道

程序通訊

1、  pipe

函式的作用:建立無名管道

函式的原型:int pipe(int fds[2])

函式的引數:新建的兩個描述符fds陣列返回

fds[0],表示管道的讀取端

fds[1],表示管道的寫入端

返回值:成功:0

出錯:-1;

標頭檔案:#include

2、  mkfifo

函式的作用:建立有名管道

函式的原型:int  mkfifo(const char*filename, mode_t mode)

引數的引數:filename:有名管道的路徑、名稱

mode:管道的方式

o_nonblock : fifo開啟的時候非阻塞

o_rdonly:以唯讀的方式建立

o_wronly:以只寫的方式建立

o_rdwr :以可讀寫的方式建立

返回值:成功:0;

出錯:-1;

3、  kill

函式的作用:傳遞訊號給指定的程序

函式的原型:int  kill(pid_t pid,  int sig)

函式的引數:pid: > 0,指定的程序pid

pid:=0,傳送給目前程序相同程序租的所有程序

pid : -1,廣播給系統的所有的程序

sig :訊號

返回值:成功:0;

失敗:-1;

標頭檔案:#include

#include

4、  raise

函式的作用:傳送訊號給本身

函式的原型:int  raise( int  sig)

標頭檔案:#include

5、  alarm

函式的作用:設定訊號傳送鬧鐘

函式的原型:unsigned int alarm(unsigned int seconds)

返回值:返回之前鬧鐘的剩餘秒數,若之前無鬧鐘,返回0

6、  pause

函式的作用:讓程序暫停知道訊號出現

函式的原型:int pause(void)

返回值:-1;

標頭檔案:#include

7、  singal

函式的作用:設定訊號處理方式

函式的原型:void (*singal) (int signum, void (*handler)(int)))(int)

typedef void(*sighandler_t(int)) sifhandler_t

singal (int signum , sighandler_t handler)

程序通訊學習的總結:

1、  程序通訊有哪幾種方式?

(1)      無名管道:用於父子程序間的通訊

(2)      有名管道:用於同一檔案系統中的任意兩個程序

2、  管道和檔案有什麼區別?

3、  建立管道與建立程序間的關係?

通常,我們要先建立乙個管道,再通過fork函式建立乙個子程序,該子程序會繼承父程序所建立的管道

程序通訊 管道通訊

程序間通訊 目的 資料傳輸 乙個程序需要將它的資料傳送給另乙個程序 資源共享 多個程序之間共享同樣的資源 通知事件 乙個程序需要向另乙個或一組程序傳送訊息,通知它們發生了某種事件 程序控制 有些程序希望完全控制另乙個程序的執行 如debug程序 此時控制程序希望能夠攔截另乙個程序的所有操作,並能夠及...

程序通訊 管道通訊

自己的理解,首先要區分概念 管道和管道通訊 所謂 管道 是指用於連線乙個讀程序和乙個寫程序以實現它們之間通訊的乙個共享檔案,又名pipe檔案 是一種特殊的檔案,這就意味著你可以向操作檔案一樣操作無名管道,無名管道在核心中對應的是一段特殊的記憶體空間,這段記憶體空間由作業系統進行管理,對使用者是不可見...

linux程序通訊 管道

管道分為有名管道和無名管道。無名管道 無名管道是半雙工的,就是對於乙個管道來講只能讀或者寫。就像高速公路一樣一條路只能單向行駛。建立無名管道的函式 所需要標頭檔案 include 函式原型 int pipe int fd 2 函式的返回值 失敗返回 1,成功返回0 乙個簡單的無名管道的例子 main...