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

正文內(nèi)容

進程間通信ipc(interprocesscommunication)(留存版)

2024-09-09 14:15上一頁面

下一頁面
  

【正文】 c)捕捉到一個信號并從信號處理程序返回(出錯返回 EINTR)。 雙態(tài)信號量 (binary semaphore) ? 信號量的初值可以是任一正值,該值說明有多少個共享資源單位可供共享應(yīng)用。release_m, 1)。 nops規(guī)定該數(shù)組中操作的數(shù)量(元素數(shù))。理由是: ( a )使用簡易,( b)進程終止時,會處理任一遺留下的鎖。 exit(1)。在新的應(yīng)用程序中,要盡可能避免使用消息隊列以及信號量,而應(yīng)當(dāng)考慮套接口和記錄鎖,因為它們與 Linux內(nèi)核的其他部分集成得要好得多,并且通過知識的復(fù)用(例如既把套接口用于網(wǎng)絡(luò)通信,也用來在進程間傳遞消息),可以減輕記憶的負(fù)擔(dān),也有利于更熟練更準(zhǔn)確更深入的使用。如果創(chuàng)建IPC的進程確需以 IPC_PRIVATE作為關(guān)鍵字,那么必須以某種方式將 IPC標(biāo)識符傳遞給其他進程,比如記文件。通常,信號量 /記錄鎖被用來實現(xiàn)對共享內(nèi)存存取的同步。 ? 若使用記錄鎖,則先創(chuàng)建一個空文件。 struct sembuf { unsigned short sem_num。 exit(1)。 include sys/ include sys/ include sys/ int semget(key_t key, int nsems, int flag)。例如,若應(yīng)用程序?qū)ο①x優(yōu)先權(quán),那么 type就可以是優(yōu)先權(quán)值。接收者可以使用消息類型以非先進先出的次序取消息。 msgget用于創(chuàng)建一個新隊列或打開一個現(xiàn)存的隊列。 ? 事實上,大多數(shù)情況不需要考慮許可權(quán)結(jié)構(gòu)的設(shè)置和修改。( Linux里定義 PIPE_BUF值為 4096) ? 在一般情況中,當(dāng)打開一個 FIFO時,如果沒有說明非阻塞標(biāo)志 O_NONBLOCK,只讀打開要阻塞到某個其他進程為寫打開此FIFO。 stat結(jié)構(gòu)成員st_mode的編碼指明文件是否是 FIFO類型。 write(fd[1], hello world\n, 12)。通常,一個管道由一進程調(diào)用 fork,此后父、子進程之間就可應(yīng)用該管道 系統(tǒng)調(diào)用 pipe函數(shù)創(chuàng)建管道 include int pipe(int filedes[2])。 } if ( (pid=fork()) 0) { perror(fork error)。管道只能由相關(guān)進程使用,它們共同的祖先進程創(chuàng)建了管道。 ? 一個給定的 FIFO有多個寫進程是常見的。 ? 為了訪問一個用 IPC_PRIVATE關(guān)鍵字創(chuàng)建的現(xiàn)存的 IPC結(jié)構(gòu),一定要知道與該 IPC結(jié)構(gòu)相結(jié)合的標(biāo)識符,然后在其他 IPC調(diào)用中(例如 msgsnd、 msgrcv)使用該標(biāo)識符。例如,沒有某種形式的忙 等待循環(huán),就不能使一個服務(wù)器等待一個消息放在兩個消息隊列的任意一個中。 /* positive message type */ char mtext[512]。 ? type 0 返回隊列中消息類型為 type的第一個消息。如果有進程正在睡眠等待此信號量,則喚醒它們。 } = 1。 對信號量集合中的第一個成員做減一操作,即試圖獲得信號量,進程將一直等待,直到獲得信號量。 ? 若使用信號量,則先創(chuàng)建一個包含一個成員的信號量集合,然后對該信號量值賦初值 1。因為數(shù)據(jù)不需要在進程之間復(fù)制,所以這是最快的一種 IPC。 三、釋放共享內(nèi)存 shmctl(shmid, IPC_RMID, 0); ? 前面結(jié)合具體的例子介紹了信號量和共享內(nèi)存,這些例子都是最常用的方法, 《 進程間通信 .doc》 有更詳細(xì)更深入的說明。服務(wù)器初始化的時候,以添加寫的方式打開日志文件,進程結(jié)束自動關(guān)閉打開的文件。 } if (shmctl(shmid, IPC_RMID, 0) 0) { perror(―shmctl error‖)。 = offset。 對信號量集合中的第一個成員做加一操作,即釋放信號量 五、刪除信號量 semctl(semid, 0, IPC_RMID, NULL)。 } 創(chuàng)建信號量 semid = semget(IPC_PRIVATE, 1, IPC_CREAT)。 ? 雙態(tài)信號量被用來實現(xiàn)進程間互斥。 ? 為了獲得共享資源,進程需要執(zhí)行下列操作: 1)測試控制該資源的信號量。 接收消息 ssize_t msgrcv(int msqid, struct msgbuf *msgp, size_t msgsz, long msgtyp, int msgflg)。 發(fā)送消息 int msgsnd(int msqid, struct msgbuf *msgp, size_t msgsz, int msgflg)。 ? 對于 FIFO而言雖然當(dāng)最后一個引用 FIFO的進程終止時其名字仍保留在系統(tǒng)中,直至顯式地刪除它,但是留在 FIFO中的數(shù)據(jù)卻在此時全部刪除。關(guān)鍵字由內(nèi)核變換成標(biāo)識符。 返回:若成功則為 0,出錯則為 1 mode參數(shù)的規(guī)格說明與 open函數(shù)中的mode相同。如果對管道進行 write調(diào)用,而且要求寫的字節(jié)數(shù)小于等于
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1