freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

進程間通信ipc(interprocesscommunication)-展示頁

2024-08-16 14:15本頁面
  

【正文】 ,則 write出錯返回, errno設置為 EPIPE。 當管道的一端被關閉后,下列規(guī)則起作用: 1) 當讀一個寫端已被關閉的管道時,在所有數(shù)據(jù)都被讀取后, read返回 0,以指示達到了文件結束處。如果對管道進行 write調(diào)用,而且要求寫的字節(jié)數(shù)小于等于 PIPE_BUF,則此操作不會與其他進程對同一管道(或 FIFO)的 write操作穿插進行。 } ? 在上面的例子中,直接對管道描述符調(diào)用 read和write。 write(STDOUT_FILENO, line, n)。 } else { // child close(fd[1])。 } else if (pid 0) { // parent close(fd[0])。 } if ( (pid=fork()) 0) { perror(fork error)。 if (pipe(fd) 0) { perror(pipe error)。 pid_t pid。 下面是一個父進程通過管道向子進程傳送數(shù)據(jù)的程序例子。對于從父進程到子進程的管道,父進程關閉管道的讀端( fd[0]),子進程則關閉寫端( fd[1])。 調(diào)用 pipe的進程接著調(diào)用 fork,這樣就創(chuàng)建了從父進程到子進程或反之的 IPC通道。 返回:若成功則為 0,若出錯則為 1 經(jīng)由參數(shù) filedes返回兩個文件描述符,filedes[0]為讀而打開, filedes[1]為寫而打開。進程間通信 IPC( InterProcess Communication) Zhxg, JN56 soft, IPC類型 ? 管道 ? FIFO(命名管道) ? 消息隊列 ? 信號量 ? 共享空間 ? 套接口 (可用于多臺主機間的進程間通信 ) 管道 特點: ? 半雙工,即數(shù)據(jù)只能在一個方向上流動 ? 只能在具有公共祖先的進程之間使用。通常,一個管道由一進程調(diào)用 fork,此后父、子進程之間就可應用該管道 系統(tǒng)調(diào)用 pipe函數(shù)創(chuàng)建管道 include int pipe(int filedes[2])。 filedes[1]的輸出是 filedes[0]的輸入。 fork之后做什么取決于我們想要有的數(shù)據(jù)流的方向。對于從子進程到父進程的管道,父進程關閉 fd[1],子進程關閉 fd[0]。 include include include include sys/ include linux/ main() { int n, fd[2]。 char line[PIPE_BUF]。 exit(1)。 exit(1)。 write(fd[1], hello world\n, 12)。 n = read(fd[0], line, PIPE_BUF)。 } exit(0)。 ? 在寫管道時,常數(shù) PIPE_BUF規(guī)定了內(nèi)核中管道緩存器的大小。但是,若有多個進程同時寫一個管道(或 FIFO),而且某個或某些進程要求寫的字節(jié)數(shù)超過 PIPE_BUF字節(jié)數(shù),則數(shù)據(jù)可能會與其他寫操作的數(shù)據(jù)相穿插。 2)如果寫一個讀端已被關閉的管道,則產(chǎn)生信號 SIGPIPE。 FIFO ? FIFO又稱為命名管道。但是,通過 FIFO,不相關的進程也能交換數(shù)據(jù)。 stat結構成員st_mode的編碼指明文件是否是 FIFO類型。創(chuàng)建FIFO類似于創(chuàng)建文件。 FIFO可由庫函數(shù) mkfifo創(chuàng)建: include sys/ include sys/ int mkfifo(const char *pathname, mode_t mode)。 FIFO也可由系統(tǒng)調(diào)用 mknod創(chuàng)建 include sys/ include sys/ include include int mknod(const char *pathname, mode_t mode, dev_t dev)。但必須帶上 S_IFIFO標志,以說明將創(chuàng)建的是一個 FIFO。一般的文件 I/O函數(shù)( close、 read、write、 unlink等)都可用于 FIFO。若某個 FIFO的最后一個寫進程關閉了該 FIFO,則將為該 FIFO的讀進程產(chǎn)生一個文件結束標志。這就意味著如果不希望多個進程所寫的數(shù)據(jù)互相穿插,則需考慮原子寫操作。( Linux里定義 PIPE_BUF值為 4096) ? 在一般情況中,當打開一個 FIFO時,如果沒有說明非阻塞標志 O_NONBLOCK,只讀打開要阻塞到某個其他進程為寫打開此FIFO。 ? 如果指定了 O_NONBLOCK,則只讀打開立即返回。 系統(tǒng) V IPC
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1