2013-10-08 70 views
0

我最近偶然發現了一些叫做pipe(所有小字母)和fork(也是所有小字母)的東西。顯然,管道「是將一個過程的標準輸出連接到另一個過程的標準輸入的一種方法」。我不明白的是一個過程的標準輸入輸出在這裏意味着什麼。我已經知道函數可以調用其他函數並使用它們返回的值,所以管道有什麼特別之處,爲什麼我們需要管道?我從來沒有在我的C/C++書籍中遇到過這些,這是什麼祕密?在兩個應用程序之間進行通信的一種簡單方法(我在這裏不使用單詞處理)是一個應用程序創建一個文件,調用另一個應用程序並讓它打開這個文件並處理它的數據並創建一個新的結果文件,而不是自行終止。與原始應用程序相比,可以繼續處理並從結果文件中讀取並刪除它首先創建的文件。這對於兩個應用程序來說是一種簡單的通信方式,我認爲在.Net framworks和複雜操作系統的時代,這一定更容易嗎?什麼是管道和叉子在C++

另外,什麼是分叉?這是特定於C++的東西嗎?我記得在互聯網上的某個地方閱讀,通過使用fork,我們可以從C++應用程序打開另一個應用程序。但是,我不知道這種方法的侷限性和含義以及它可能存在的缺陷。爲什麼我們需要叉子?它有什麼作用?

我不希望任何人都要寫幾頁信息。我只是想了解這些東西是什麼,它們做什麼,爲什麼我們需要它們,以及我的C/C++書籍沒有涵蓋這兩者?

+0

看這裏http://en.wikipedia.org/wiki/Standard_streams和這裏http://en.wikipedia.org/wiki/Pipeline_%28Unix%29例如。 C程序的組成部分和操作系統提供的組件之間可能也存在一些混淆。 – JimmyB

回答

1

這些是unix系統調用。它們不是C++語言或標準庫的一部分,但是特定於類Unix操作系統。

fork創建一個新進程,並且pipe創建一個單向通信通道。管道和叉子通常被組合並用於進程間通信。