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

正文內(nèi)容

linux應(yīng)用編程(編輯修改稿)

2025-08-13 15:36 本頁面
 

【文章內(nèi)容簡介】 if ( (semid = semget(IPC_PRIVATE, 1, IPC_CREAT)) 0) { perror(―semget error‖)。 exit(1)。 } = 1。 if (semctl(semid, 0, SETVAL, arg) 0) { perror(―semctl setval error‖)。 semctl(semid, 0, IPC_RMID, NULL)。 exit(1)。 } semop(semid, amp。acquire_m, 1)。 semop(semid, amp。release_m, 1)。 semctl(semid, 0, IPC_RMID, NULL)。 exit(0)。 } 創(chuàng)建信號量 semid = semget(IPC_PRIVATE, 1, IPC_CREAT)。 創(chuàng)建一個新的信號量集合,這個集合里只有一個成員,返回信號量標(biāo)識符 semid 設(shè)置信號量的值 union semun arg。 = 1。 semctl(semid, 0, SETVAL, arg)。 設(shè)置信號量集合中的第一個成員的值為 1,成員的計數(shù)從 0開始 獲取信號量 struct sembuf acquire_m = { 0, 1 , SEM_UNDO}, semop(semid, amp。acquire_m, 1)。 對信號量集合中的第一個成員做減一操作,即試圖獲得信號量,進(jìn)程將一直等待,直到獲得信號量。 int semop(int semid, struct sembuf semoparray[ ], size_t nops)。 返回:若成功則為 0,若出錯則為 1 semoparray是一個指針,它指向一個信號量操作數(shù)組。 struct sembuf { unsigned short sem_num。 /* semaphore index in array */ short sem_op。 /* operation */ short sem_flg。 /* operation flags */ }。 nops規(guī)定該數(shù)組中操作的數(shù)量(元素數(shù))。 釋放信號量 struct sembuf rlease_m = { 0, 1 , SEM_UNDO}, semop(semid, amp。release_m, 1)。 對信號量集合中的第一個成員做加一操作,即釋放信號量 五、刪除信號量 semctl(semid, 0, IPC_RMID, NULL)。 進(jìn)程終止時,不會自動刪除信號量。 如果在進(jìn)程終止時,它占用了經(jīng)由信號量分配的資源,那么就會成為一個問題。無論何時只要為信號量操作指定了 SEM_UNDO標(biāo)志,然后分配資源( sem_op值小于 0),那么內(nèi)核就會記住對于該特定信號量,分配給我們多少資源( sem_op的絕對值)。當(dāng)該進(jìn)程終止時,內(nèi)核將檢驗該進(jìn)程是否還有尚未處理的信號量調(diào)整值,如果有,則按調(diào)整值對相應(yīng)量值進(jìn)行調(diào)整,設(shè)置為 0 。 信號量與記錄鎖的比較 ? 如果多個進(jìn)程共享一個資源,則可使用信號量或記錄鎖。 ? 若使用信號量,則先創(chuàng)建一個包含一個成員的信號量集合,然后對該信號量值賦初值 1。為了分配資源,以 sem_op為- 1調(diào)用semop,為了釋放資源,則以 sem_op為 +1調(diào)用 semop。對每個操作都指定 SEM_UNDO,以處理在未釋放資源情況下進(jìn)程終止的情況。 ? 若使用記錄鎖,則先創(chuàng)建一個空文件。為了分配資源,先對該文件獲得一個寫鎖,釋放該資源時,則對該文件解鎖。記錄鎖的性質(zhì)確保了,當(dāng)有一個鎖的進(jìn)程終止時,內(nèi)核會自動釋放該鎖。 ? 記錄鎖稍慢于信號量鎖,但如果只需鎖一個資源(例如共享內(nèi)存)并且不需要使用系統(tǒng) V信號量的所有花哨的功能,則寧可使用記錄鎖。理由是: ( a )使用簡易,( b)進(jìn)程終止時,會處理任一遺留下的鎖。 記錄鎖示例 int lock_reg(int fd, int cmd, int type, off_t offset, int whence, off_t len) { struct flock lock。 = type。 = offset。 = whence。 = len。 return(fnctl(fd, cmd, amp。lock))。 } define read_lock(fd,offset,whence,len) \ lock_reg (fd, F_SETLK, F_RDLCK, offset, whence, len) 加讀鎖,失敗立即返回 define readw_lock(fd,offset,whence,len) \ lock_reg (fd, F_SETLKW, F_RDLCK, offset, whence, len) 加讀鎖,直到成功才返回 define write_lock(fd,offset,whence,len) \ lock_reg (fd, F_SETLK, F_WRLCK, offset, whence, len) 加寫鎖,失敗立即返回 define writew_lock(fd,offset,whence,len) \ lock_reg (fd, F_SETLKW, F_WRLCK, offset, whence, len) 加寫鎖,直到成功才返回 define un_lock(fd,offset,whence,len) \ lock_reg (fd, F_SETLK, F_UNLCK, offset, whence, len) 解鎖 共享內(nèi)存 ? 共享內(nèi)存允許兩個或多個進(jìn)程共享一給定的存儲區(qū)。因為數(shù)據(jù)不需要在進(jìn)程之間復(fù)制,所以這是最快的一種 IPC。使用共享內(nèi)存的唯一竅門是多個進(jìn)程之間對一給定存儲區(qū)的同步存取。若進(jìn)程 A將數(shù)據(jù)放入共享內(nèi)存區(qū),則在進(jìn)程 A做完這一操作之前,進(jìn)程 B不應(yīng)當(dāng)去取這些數(shù)據(jù)。通常,信號量 /記錄鎖被用來實現(xiàn)對共享內(nèi)存存取的同步。 include sys/ include sys/ include sys/ define SHM_SIZE 100000 define SHM_MODE (SHM_R|SHM_W) int main(void) { int shmid。 char *shmptr。 if ((shmid=shmget(IPC_PRIVATE, SHM_SIZE, SHM_MODE)) 0){ perror(―shmget error‖)。 exit(1)。 } if ( (shmptr = shmat(shmid, 0, 0)) == (void *)1 ) { perror(―shmat error‖)。 exit(1)。 } if (shmctl(shmid, IPC_RMID, 0) 0) { perror(―shmctl error‖)。 exit(1)。 } exit(0)。 } 一、創(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)識符 shmid。 二、連接共享內(nèi)存段到進(jìn)程地址空間 shmptr = shmat(shmid, 0, 0); 把共享內(nèi)存段連接到由內(nèi)核選擇的進(jìn)程第一個可用地址上。接下來,進(jìn)程通過指針shmptr就可以象訪問普通內(nèi)存段一樣使用共享內(nèi)存段了。 三、釋放共享內(nèi)存 shmctl(shmid, IPC_RMID, 0); ? 例子中都是以 IPC_PRIVATE作為關(guān)鍵字創(chuàng)建 IPC的,對于有父子關(guān)系的進(jìn)程,可以令父進(jìn)程創(chuàng)建 IPC,并把 IPC標(biāo)識符說明成全局變量(對于共享內(nèi)存也可以把共享內(nèi)存地址說明成全局變量),子進(jìn)程通過繼承取得這些值,并使用它們進(jìn)行 IPC。 ? 對于獨(dú)立進(jìn)程間的通信,一般要指定一個約定的 key,一個進(jìn)程以它為關(guān)鍵字創(chuàng)建 IPC,其他進(jìn)程以它為關(guān)鍵字引用 IPC(創(chuàng)建和引用 IPC的接口是一樣的)。如果創(chuàng)建 IPC的進(jìn)程確需以 IPC_PRIVATE作為關(guān)鍵字,那么必須以某種方式將 IPC標(biāo)識符傳遞給其他進(jìn)程,比如記文件。 小結(jié) ? 本章詳細(xì)說明了進(jìn)程間通信的多種形式;管道、命名管道( FIFO)以及另外三種 IPC形式,通常稱之為系統(tǒng) V IPC——消息隊列、信號量和共享內(nèi)存。信號量實際上是同步原語而不是 IPC,常用于共享資源的同步存取,例如共享內(nèi)存。 ? 提出下列建議:學(xué)會使用管道和 FIFO,因為在大量應(yīng)用程序中仍可有效地使用這兩種基本技術(shù)。在新的應(yīng)用程序中,要盡可能避免使用消息隊列以及信號量,而應(yīng)當(dāng)考慮套接口和記錄鎖,因為它們與 Linux內(nèi)核的其他部分集成得要好得多,并且通過知識的復(fù)用(例如既把套接口用于網(wǎng)絡(luò)通信,也用來在進(jìn)程間傳遞消息),可以減輕記憶的負(fù)擔(dān),也有利于更熟練更準(zhǔn)確更深入的使用。共享內(nèi)存有其應(yīng)用場合。 文件操作編程 ? 文件類型 ? 文件的屬性和操作 ? 目錄操作 ? 系統(tǒng)調(diào)用 I/O接口 ? 庫函數(shù) I/O接口 文件類型 1) 普通文件 (regular file)。這是最常見的文件類型,這種文件包含了某種形式的數(shù)據(jù)。至于這種數(shù)據(jù)是文本還是二進(jìn)制數(shù)據(jù)對于 Linux系統(tǒng)而言并無區(qū)別。 2) 目錄 (directory)。文件夾。 3) 字符特殊文件 (character special file)。這種文件用于系統(tǒng)中某些類型的設(shè)備,例如聲卡、網(wǎng)卡、鍵盤、鼠標(biāo)。 4) 塊特殊文件 (block special file)。這種文件典型地用于磁盤設(shè)備。系統(tǒng)中的所有設(shè)備或者是字符特殊文件,或者是塊特殊文件。 5) FIFO。這種文件用于進(jìn)程間的通信,有時也將其稱為命名管道。 6) 套接口 (socket)。這種文件用于進(jìn)程間的網(wǎng)絡(luò)通信。套接口也可用于在一臺宿主機(jī)上的進(jìn)程之間的非網(wǎng)絡(luò)通信。 7) 符號連接 (symbolic link)。這種文件指向另一個文件。 ? 文件類型信息包含在 stat結(jié)構(gòu)的 st_mode成員中??梢杂孟旅娴暮甏_定文件類型。這些宏的參數(shù)都是 stat結(jié)構(gòu)中的 st_mode成員。 S_ISREG( ) 普通文件 S_ISDIR( ) 目錄文件 S_ISCHR( ) 字符特殊文件 S_ISBLK( ) 塊特殊文件 S_ISFIFO( ) 管道或 FIFO S_ISLNK( ) 符號連接 S_ISSOCK( ) 套接字 如果文件類型是待判定的類型,則這些宏的值非 0。 取文件屬性 include sys/ include sys/ int stat(const char * pathname, struct stat *buf)。 int fstat(int filedes,struct stat *buf)。 int lstat(const char *pathname, struct stat *buf)。 三個函數(shù)的返回:若成功則為 0,若出錯則為 1 struct stat { dev_t st_dev。 /* device */ ino_t st_ino。 /* inode */ mode_t st_mode。 /* protection */ nlink_t st_nlink。 /* number of hard links */ uid_t st_uid。 /* user ID of owner */ gid_t st_gid。 /* group ID of owner */ dev_t st_rdev。 /* device type (if inode device) */ off_t st_size。 /* total size, in bytes */ blksize_t st_blksize。 /* blocksize for filesystem I/O */ blkt_t st_blocks。 /* number of blocks allocated */ time_t st_atime。 /* time of last access */ time_t st_mt
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1