Linux下進程/線程間通信如何正確學習?
01-04
APUE 和 Unix網路編程-進程間通信中都詳細介紹了 Linux 下的進程間通信方式。然而posix和systemV兩套API都提供了有些交叉的進程間同步和通信的方式。
同步和互斥方法太多,又有兩個大幫派;陳碩的《linux多線程伺服器編程》里只建議用少數的同步方式,數據交換用socket;
也有的說法systemV方法現在已經很少使用,但是不同的書中介紹篇幅卻也不少;在全面,粗略的了解後覺得應該有針對性的深入了解和實踐一下。深入學習應如何側重(目標找後台開發工作)?學習應達到什麼樣水平?了解Linux內核中不同IPC的實現是否必要?
讀APUE和UNP。
然後對著擼demo:
Beej"s Guide to Unix IPCUNIX programming examples曾經給每種通信方式寫了demo,供參考clpsz/linux-ipcs · GitHub
========================15.06.09補充============================
多謝大家的支持,放張REDEME.md圖片,看擴展說明就知道其實還沒寫完,歡迎PR:不管什麼操作系統,IPC的方式通常就那麼幾類,優缺點在稍微現代一點的書上都能找到。SystemV少用,盡量用POSIX.1-2001的,方便移植。
關於進程間通訊,我覺得主要是需要了解不同通訊方式的區別,因為他們都有不同的應用場景。譬如共享內存,管道,套接字以及信號量,互斥體,都是存在區別的。建議先把demo都熟悉一遍,然後去看開源系統的源代碼,因為IPC是非常常用的。剛畢業,經驗有限,勿噴。
man
推薦閱讀:
※為什麼我用金山重裝的系統每次重裝完後都被360查出一大堆漏洞,而用360重裝的就不會?
※兩種開放態度,為什麼桌面端 Windows/Linux 的口碑與移動端 iOS/Android 相反?
※為什麼絕大多數電子產品的時間設定都只能調到1970年?
※為什麼現在的操作系統基本上用C語言來實現?
※不同編程語言之間是如何溝通的?