因為要協作啊
比如伺服器上執行著一個httpd和一個比如說mysqld,那麼httpd在收到一個請求後去呼叫了一個cgi程式,這個cgi程式想要訪問資料庫,那麼就要去和那個mysqld通訊吧。這種情況下一般用的是網路的方法,通用性更強一些
比如一個程式想要在Xserver上顯示一些東西,那麼…………嗯這又是網路……wayland也是網路……
比如一個多執行緒下載軟體,其中一個下載執行緒下載完了,要把進度彙報給主執行緒啊,這個時候怎麼辦,就要通訊。不過一般來說多執行緒下載依然是在同一個程序裡進行,這個時候是程序內部的多執行緒通訊,要容易一些。
比如systemd啟動了一個daemon,它不知道這個daemon有沒有正常啟動完成,那麼daemon就需要給systemd一定的提示,告訴systemd自己的狀態。這就需要通訊………這裡有時候會用dbus,有的時候會是雙重fork之類的情況。
比如你想讓某個daemon reload或者restart一下,那麼你就需要給那個daemon發訊號,去通知它。
就是說,凡是有協作的地方,一定會有各種不同形式的通訊,因為不通訊就沒辦法協作嘛。網路之所以越來越得被用來做程序間通訊,是因為網路很通用,除了可以和本機的程序通訊,還可以和其他機器的程序通訊,所以我們能發現,httpd和資料庫伺服器完全可以不在同一臺機器上,linux遠端桌面的實現非常簡單隻需要X轉發。
除此之外,經常被用於ipc的機制還包括,共享記憶體,檔案系統,管道,訊息(message),訊號(signal)。共享記憶體是效率最高的方法,被Xwindow和wayland所採用。訊號是最方便的ipc方法,不過功能也最弱。基於管道,檔案系統和訊息的ipc是類似於網路的,在特定場合比網路有些優勢。
因為要協作啊
比如伺服器上執行著一個httpd和一個比如說mysqld,那麼httpd在收到一個請求後去呼叫了一個cgi程式,這個cgi程式想要訪問資料庫,那麼就要去和那個mysqld通訊吧。這種情況下一般用的是網路的方法,通用性更強一些
比如一個程式想要在Xserver上顯示一些東西,那麼…………嗯這又是網路……wayland也是網路……
比如一個多執行緒下載軟體,其中一個下載執行緒下載完了,要把進度彙報給主執行緒啊,這個時候怎麼辦,就要通訊。不過一般來說多執行緒下載依然是在同一個程序裡進行,這個時候是程序內部的多執行緒通訊,要容易一些。
比如systemd啟動了一個daemon,它不知道這個daemon有沒有正常啟動完成,那麼daemon就需要給systemd一定的提示,告訴systemd自己的狀態。這就需要通訊………這裡有時候會用dbus,有的時候會是雙重fork之類的情況。
比如你想讓某個daemon reload或者restart一下,那麼你就需要給那個daemon發訊號,去通知它。
就是說,凡是有協作的地方,一定會有各種不同形式的通訊,因為不通訊就沒辦法協作嘛。網路之所以越來越得被用來做程序間通訊,是因為網路很通用,除了可以和本機的程序通訊,還可以和其他機器的程序通訊,所以我們能發現,httpd和資料庫伺服器完全可以不在同一臺機器上,linux遠端桌面的實現非常簡單隻需要X轉發。
除此之外,經常被用於ipc的機制還包括,共享記憶體,檔案系統,管道,訊息(message),訊號(signal)。共享記憶體是效率最高的方法,被Xwindow和wayland所採用。訊號是最方便的ipc方法,不過功能也最弱。基於管道,檔案系統和訊息的ipc是類似於網路的,在特定場合比網路有些優勢。