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

正文內(nèi)容

進(jìn)程間通信ipc(interprocesscommunication)-預(yù)覽頁(yè)

 

【正文】 信號(hào) SIGPIPE。但是,通過(guò) FIFO,不相關(guān)的進(jìn)程也能交換數(shù)據(jù)。創(chuàng)建FIFO類似于創(chuàng)建文件。 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)。一般的文件 I/O函數(shù)( close、 read、write、 unlink等)都可用于 FIFO。這就意味著如果不希望多個(gè)進(jìn)程所寫的數(shù)據(jù)互相穿插,則需考慮原子寫操作。 ? 如果指定了 O_NONBLOCK,則只讀打開立即返回。 ? 創(chuàng)建 IPC結(jié)構(gòu)(調(diào)用 msgget、 semget或 shmget)時(shí) ,都必須指定一個(gè)關(guān)鍵字( key),關(guān)鍵字的數(shù)據(jù)類型由系統(tǒng)規(guī)定為 key_t,通常在頭文件sys/中被規(guī)定為長(zhǎng)整型。 ? 如果希望創(chuàng)建一個(gè)新的 IPC結(jié)構(gòu),保證不是引用具有同一標(biāo)識(shí)符的一個(gè)現(xiàn)行 IPC結(jié)構(gòu),那么必須在 flag中同時(shí)指定 IPC_CREAT和IPC_EXCL位。 許可權(quán)結(jié)構(gòu) ? 系統(tǒng) V IPC為每一個(gè) IPC結(jié)構(gòu)設(shè)置了一個(gè)ipc_perm結(jié)構(gòu)。 ↓ ? 這些 IPC結(jié)構(gòu)并不按名字為文件系統(tǒng)所知。 ? 將此與管道 pipe相比,那么當(dāng)最后一個(gè)訪問(wèn)管道的進(jìn)程終止時(shí),管道就被完全地刪除了。于是,也不得不增加了全新的命令 ipcs和 ipcrm。 消息隊(duì)列 ? 消息隊(duì)列是消息的鏈接表 ,存放在內(nèi)核中并由消息隊(duì)列標(biāo)識(shí)符標(biāo)識(shí)。每個(gè)消息包含一個(gè)正長(zhǎng)整型類型字段,一個(gè)非負(fù)長(zhǎng)度以及實(shí)際數(shù)據(jù)字節(jié)(對(duì)應(yīng)于長(zhǎng)度),所有這些都在將消息添加到隊(duì)列時(shí),傳送給 msgsnd。 刪除隊(duì)列 int msgctl(int msqid, IPC_RMID , NULL)。 msgp指向一個(gè)長(zhǎng)整型數(shù),它包含了正整型消息類型,在其后立即跟隨了消息數(shù)據(jù)。 /* message data, of length msgsz*/ }。這類似于文件 I/O的非阻塞 I/O標(biāo)志。最后一種情況則返回 EINTR。若返回的消息大于 msgsz,而且在msgflg中設(shè)置了 MSG_NOERROR,則該消息被截短(在這種情況下,不通知我們消息截短了)。 ? type 0 返回隊(duì)列中消息類型值小于或等于 type絕對(duì)值,而且在這種消息中,其類型值又最小的消息。 ? 可以指定 msgflg值為 IPC_NOWAIT,使操作不阻塞。 信號(hào)量 ? 信號(hào)量實(shí)際上是同步原語(yǔ)而不是 IPC,常用于共享資源的同步存取,例如共享內(nèi)存。 3)若此信號(hào)量的值為 0,則進(jìn)程進(jìn)入睡眠狀態(tài),直至信號(hào)量值大于 0。 ? 信號(hào)量其實(shí)是含有一個(gè)或多個(gè)信號(hào)量值的集合。如果是創(chuàng)建新集合,則必須指定 nsems。它控制單個(gè)資源,其初始值為 1。 struct sembuf acquire_m = { 0, 1 , SEM_UNDO}, release_m = { 0, 1 , SEM_UNDO}。 if (semctl(semid, 0, SETVAL, arg) 0) { perror(―semctl setval error‖)。acquire_m, 1)。 exit(0)。 semctl(semid, 0, SETVAL, arg)。 int semop(int semid, struct sembuf semoparray[ ], size_t nops)。 /* operation */ short sem_flg。release_m, 1)。無(wú)論何時(shí)只要為信號(hào)量操作指定了SEM_UNDO標(biāo)志,然后分配資源( sem_op值小于 0),那么內(nèi)核就會(huì)記住對(duì)于該特定信號(hào)量,分配給我們多少資源( sem_op的絕對(duì)值)。為了分配資源,以 sem_op為- 1調(diào)用semop,為了釋放資源,則以 sem_op為 +1調(diào)用 semop。記錄鎖的性質(zhì)確保了,當(dāng)有一個(gè)鎖的進(jìn)程終止時(shí),內(nèi)核會(huì)自動(dòng)釋放該鎖。 = type。 return(fnctl(fd, cmd, amp。使用共享內(nèi)存的唯一竅門是多個(gè)進(jìn)程之間對(duì)一給定存儲(chǔ)區(qū)的同步存取。 char *shmptr。 exit(1)。 } 一、創(chuàng)建共享內(nèi)存 define SHM_SIZE 100000 define SHM_MODE (SHM_R|SHM_W) shmid=shmget(IPC_PRIVATE,SHM_SIZE,SHM_MODE); 創(chuàng)建大小為 SHM_SIZE的可讀可寫的共享內(nèi)存段,返回標(biāo)識(shí)符 shmid。 ? 例子中都是以 IPC_PRIVATE作為關(guān)鍵字創(chuàng)建 IPC的,對(duì)于有父子關(guān)系的進(jìn)程,可以令父進(jìn)程創(chuàng)建 IPC,并把 IPC標(biāo)識(shí)符說(shuō)明成全局變量(對(duì)于共享內(nèi)存也可以把共享內(nèi)存地址說(shuō)明成全局變量),子進(jìn)程通過(guò)繼承取得這些值,并使用它們進(jìn)行 IPC。信號(hào)量實(shí)際上是同步原語(yǔ)而不是 IPC,常用于共享資源的同步存取,例如共享內(nèi)存。 關(guān)于服務(wù)器調(diào)試 ? 用加打印語(yǔ)句的方法 ? 對(duì)后臺(tái)運(yùn)行的服務(wù)器,把信息打印到約定的日志文件里。 ―Fri Mar 26 15:09:54 2022\n‖ ? 實(shí)時(shí)查看信息: tail –f 日志文件 謝謝
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1