sysv-ipc

    0熱度

    1回答

    美好的一天。我在兩個不同的進程之間使用共享內存(sysv_ipc),我想在另一個代碼中看到共享內存的最後更新時間。有三個程序,一個寫入共享內存,另一個讀取共享內存,第三個需要外部錯誤處理,所以我想知道共享內存是否在最近幾分鐘內沒有更新。有了這個想法,我嘗試訪問共享內存的屬性「last_attach_time」。當我在終端中運行它時它工作正常。那是我在終端創建了一次共享內存的對象,然後我試着連續訪問

    3熱度

    2回答

    我已經實現了一個訪問控制,用於插入用於預訂服務的數據庫表中。它可以正常工作一段時間,然後sem_get()函數失敗,儘管我在每個sem_get()之後調用sem_release()。 case 'room': $key = "room"; $semaphore = sem_get($key, 1, 0666, 1); if ($semaphore) { s

    0熱度

    1回答

    我是linux內核模塊開發的新手,我正在尋找從內核模塊到用戶空間進程的共享內存段以避免複製數據的延遲。 我正在使用sys v共享內存api,當我在兩個進程之間共享內存時它工作正常,但我無法在進程和內核模塊之間共享內存。 波紋管是我的內核模塊和用戶空間應用 服務器端的代碼:模塊 #include <linux/module.h> // init_module, cleanup_module //

    3熱度

    2回答

    當我有幾個進程正在使用共享內存時,並且我將它們全部分開,但只有一個。 在將共享內存與shmctl()(使用該進程)除去共享內存之前,拆除最後一個進程是否合理? 如果沒有任何意義,是否可以從中分離後刪除共享內存?

    1熱度

    1回答

    我知道當我創建一個共享內存塊時,我們設置權限,以便每個進程都可以在該塊中讀寫0777(不知道爲什麼,我的老師只是說這樣使用它)。 我創建與shmget的爲: shmget(IPC_PRIVATE, sizeof(server_config), IPC_CREAT|0777) 不過,我想知道: 什麼每個數字意味着 後如何更改標誌共享內存塊被創建 如何僅允許1個過程s到寫,而所有其他procces

    0熱度

    1回答

    與mmap(),進程必須繼承父級映射以共享內存。有沒有辦法在不共享父級的進程之間共享內存? shmat()似乎是最好的解決方案,但如果進程沒有在退出/死亡時分離內存,它需要清理。 域套接字接近共享內存...

    1熱度

    2回答

    我想通過一個例子來理解計數信號量的概念。但我想在Linux中使用SysV來實現這一點。 我熟悉二進制信號量的理論部分和計數信號量。 我已經提到這個link。 從概念上講,信號量被用作從一個進程到另一個進程的信號機制,所以我試圖編寫一個簡單的程序。 在下面的節目,我想thread_1等到它不會從thread_2得到一個信號,同樣thread_2應該等到它不會從thread_3得到的信號。 從而使輸出

    5熱度

    1回答

    我在讀POSIX和System V信號量之間的差異,我讀了一些相同的文章。在每篇文章中,該陳述都寫爲: 「如果您需要以多個增量實現原子操作 - 在一個步驟中遞減,則系統V信號是有益的。」 我的問題是: 1)什麼是在單個原子操作需要多個遞增/遞減?你能用一個例子來解釋嗎? 2)爲什麼semop允許將值更改爲小於-1且大於+1的值?有沒有實際的用法/相同的例子?我知道用系統V信號量中的semop()函

    2熱度

    1回答

    我有與系統v庫(信號量,消息隊列)和多個進程conformed應用程序(機場併發模擬)。 我不允許使用線程,這就是爲什麼我有一個進程線程和多個「飛機」進程。 我想添加一些圖形來顯示與GTK(與開羅)庫機場的流量。 如何添加圖形?當我嘗試將它添加到機場進程時,gtk_main會阻止整個應用程序。我想過創建另一個進程並將圖形添加到共享內存中,但我已經讀過,它不會起作用。 什麼是最簡單/最好的選擇? 非

    6熱度

    1回答

    在具有多個進程的Linux系統中,如果持有信號量的進程崩潰,系統V信號量允許選項SEM_UNDO防止信號量「卡住」。什麼是正確的方法來防止POSIX信號量因持有信號量的進程崩潰而被阻塞?或POSIX 保證信號量在崩潰的情況下被釋放?