2011-12-28 186 views
2

重複搜索後,我還沒有找到這個問題的優雅解決方案:如何在obj-c中運行shell命令並獲取它的輸出。我已經閱讀了很多關於這方面的問題,但他們都未能回答我的問題。如何在可可中運行shell命令並獲取輸出?

一些獲得退出值(Get result from shell script objective-c)其他人只運行命令(Cocoa/ Objective-C Shell Command Line Execution),最後其他人有我寫輸出到一個文件(Execute a terminal command from a Cocoa app)。

我真的很想避免寫/讀文件,因爲它不是一個很乾淨的解決方案。

有沒有辦法直接在obj-c中讀取輸出?如果是這樣如何?

+0

請將您的問題重新格式化以提高可讀性。 – tobiasbayer 2011-12-28 22:50:29

+0

對不起,我假設後端會自動解析網址。 – Trcx 2011-12-28 22:51:53

+0

一些段落也將是一個很大的改進。 – tobiasbayer 2011-12-28 22:56:24

回答

2

來自第一個鏈接的「doshellscript」的代碼(Get result from shell script objective-c)確實會返回一個NSString與命令的輸出。如果它不適合你,也許命令輸出的是stderr而不是stdin?你嘗試過這個嗎?在Cocoa中運行命令的標準機制是NSTask,所以至少從那裏開始。

+0

感謝您指出這一點,原本我想念這是從一個臨時文件中讀取並獲取腳本的退出代碼,歸咎於我在凌晨2:30閱讀它。今天早上有了一個明確的(呃)頭腦,我就能夠分解這個功能並使其工作。 – Trcx 2011-12-29 18:11:12

2

看看類PRHTask。它是NSTask的替代品,帶有完成塊。從標題https://bitbucket.org/boredzo/prhtask

提取物:

  • 第一,而不必設置標準輸出和錯誤你自己管,你可以告訴任務積累爲你輸出,當檢索任務完成。
  • 其次,當進程退出而不是發佈NSNotification時,PRHTask會調用您提供的兩個塊中的任意一個。如果需要,您可以將它們都設置爲同一個塊。
相關問題