我想創建一個系統,它包含一個服務器和多個正在嘗試相互通信的客戶端。客戶端將數據放入共享內存(使用ftok/shmget創建),然後能夠將數據寫入此內存。這些包含2個獨立的程序。C++ - 進程之間共享的互斥體
服務器讀取客戶端寫入共享內存的值,並將它們寫入文件。我可以讓客戶端將數據寫入共享內存,然後服務器讀取數據,但是我無法鎖定共享內存,因此多個客戶端不能同時寫入。
我試着創建一個信號量(使用sem_open),但是這個過程之間不共享。我該如何去分享進程之間的信號量(或互斥體,因爲這些可能會更好)?
我認爲我遇到的問題是當程序結束時我的信號燈沒有被刪除。我正在打開信號量:sem_open(「lock」,O_CREAT,0644,1);但是當我之後立即讀取值時,它是0. – xur17
我想通了我的問題。使用ipcs時不會列出信號量,它們位於/ dev/shm中。我還使用sem_unlink(「NAME」)添加了一個清除函數,用於取消信號量的鏈接。這解決了我的問題。 – xur17