2010-02-13 49 views
0

newb here。我試圖製作一個C++程序,它將從python創建的命名管道中讀取數據。我的問題是,由python創建的命名管道使用os.getpid()作爲管道名稱的一部分。當我嘗試從C++調用管道時,我使用getpid()。我沒有從C++獲得同樣的價值。 os.getpid在C++中是否有相當的方法?如何在C++中執行os.getpid()?

的感謝!

編輯:

對不起,我實際使用os.getpid()通過ProcessIDtoSessionID獲取會話ID()。然後我使用會話ID作爲管道名稱

+0

沒有標準的C++方式。這取決於您的操作系統,或者您使用的庫/框架。請提供更多信息。 – Macke 2010-02-13 12:11:55

+0

這是操作系統? – Naveen 2010-02-13 12:12:52

+1

你是什麼人「不一樣的價值」? getpid()返回進程ID - 每次調用時它都會不同(可能)。 – 2010-02-13 12:13:03

回答

0

的一部分,標準庫不給您的文件以外的任何其他。您將需要使用其他特定於操作系統的API。

4

,因爲你的Python程序和C++程序在不同proccesses運行因此具有不同的進程號你沒有得到相同的proccess的ID。所以通常使用不同的邏輯來命名你的fifo文件。

+0

我明白了。謝謝。我使用os.getpid()作爲pywin32的ProcessIDtoSessionID的參數來獲取會話ID。 我會嘗試使用不同的方法。再次感謝! – maranas 2010-02-13 12:21:26

2

不會如果您作爲單獨的進程運行,並且每個進程都有自己的進程ID,那麼它們會得到相同的值。找一些其他方式來識別管道。

0

你不能輕易地從你的C++程序檢索Python解釋器的PID。

無論是分配的命名管道恆定的名稱,或者如果你真的需要同一Python程序的多個管道,創建一個臨時文件的Python程序編寫它們的PID到(使用文件鎖定!) - 那麼你就可以從C++程序中讀取PID。