Linux系統上運行有多個進程,其中許多都是獨立運行。然而,有些進程必須相互合作以達成預期目的,因此彼此間需要通信和同步機制。
讀寫磁盤文件中的信息是進程間通信的方法之一。可是,對許多程序來說,這種方法既慢又缺乏靈活性。因此,像所有現代UNIX實現那樣,Linux也提供了豐富的進程間通信(IPC)機制,如下所示:
信號(signal):用來表示事件的發生。
管道和FIFO:用於在進程間傳遞數據。
套接字:供同一台主機或是聯網的不同主機上所運行的進程之間傳遞數據。
文件鎖定:為防止其他進程讀取或更新文件內容,允許某進程對文件的部分區域加以鎖定。
消息隊列:用於在進程間交換信息(數據包)
信號量(semaphore):用來同步進程動作。
共享內存:允許兩個及兩個以上進程共享一塊內存。當某進程改變了共享內存的內容時,其他所有進程會立即了解到這一變化。
UNIX系統的IPC機制種類如此繁多,有些功能還互有重疊,部分原因是由於各種IPC機制是在不同的UNIX實現上演變而來的,需要遵循的標准也各不相同。例如,就本質而言,FIFO和UNIX套接字功能相同,允許同一系統上並無關聯的進程彼此交換數據。二者之所以並存於現代UNIX系統之中,是由於FIFO來自System V,而套接字則源於BSD。