我想有一個父進程,它創建了一堆子進程,我希望它們都在一個緩衝區上運行(執行讀寫操作)。例如,如果「cat」被存儲在我的緩衝區中,並且child0將其修改爲「cat-in」,那麼這個「緩衝區」就是一個C字符串(以空字符結尾的字符串)貓「,child1和child2等也會將緩衝區的內容看作」貓貓「。如何在Linux下在C中的兩個子進程之間共享緩衝區?
似乎有一個命令,mmap
這正是我想要的,但我在互聯網上看到很多指南,但事情是我有一個非常困難的時間包裝我的腦海周圍共享區,所以我真的需要一個如何將其用於我所需要的具體示例,而且我所看到的指南中沒有一個似乎正確地涵蓋了這一點(其中大多數僅涵蓋讀取訪問權限,而覆蓋寫入訪問權限的內容似乎適用於更復雜的情況,因此有複雜的代碼,我不明白)。所以請記住這一點,如果你要標記爲重複。
爲了進一步明確和簡化我的問題......如果我有 $字符* BUF $ ......在我父程序..什麼是代碼,我需要寫,這樣寫 $說明書strcpy(buf,「cat」)$ ...在我的一個子進程中,更改對所有子進程都是可見的?
谷歌的'先進的UNIX編程IPC mmap'ROCHKIND的書將出現在谷歌的圖書搜索中。這是一個非常好的參考。 – ojblass
當child0將一個子字符串插入到'buffer'中時,這也會干擾所有其他正在操作緩衝區的子級使用的索引,並且還需要鎖定緩衝區以防止同時更改多個線程。 –
如果你想要多個進程寫入內存,你應該閱讀[POSIX semaphores](http://man7.org/linux/man-pages/man7/sem_overview.7.html)。 –