簡體   English   中英

NSTask和NSPipe示例與命令行objective-c通信

[英]NSTask and NSPipe example to comunicate with the command line objective-c

有人可以展示一個關於如何結合使用 NSTask 和 NSPipe 來執行此操作的快速示例:

Charlie AI - 通過終端運行與 AI 通信

我想使用 xcode 和目標 c 為它創建一個很好的 GUI。 我想有 2 個 NSTextFields 用於 charlie 的響應和用戶輸入。 然后有一個發送按鈕將用戶輸入發送到命令行,然后獲取查理的響應並將其發布到 NSTextField 中。

我可以處理 GUI 的東西(NSTextField 等),但我需要 Objective-c 編碼部分的幫助。

謝謝!

以利亞

Apple 有一些很好的示例代碼,展示了如何完成大部分工作。

TaskWrapper.m包含所有聰明的東西,但是由於您希望能夠將數據發送到任務,您需要對其進行一些擴展,如下所示:

[task setStandardInput: [NSPipe pipe]];

要將輸入發送到任務,您可以執行以下操作:

[[[task standardInput] fileHandleForWriting] writeData: ...];

要將 NSTextField 的值轉換為數據,您可以執行以下操作:

NSData *data = [[inputTextField stringValue] 
                dataUsingEncoding:NSUTF8StringEncoding];

...並為您的子任務設置當前工作目錄,請使用[NSTask setCurrentDirectoryPath:]

例如

[task setCurrentDirectoryPath: @"/blah/blah"];
[task setLaunchPath: @"/blah/blah/server.sh"];

.... (other setup code)

[task launch];

還有 AMShellWrapper 示例代碼,它改進了moriarity。

http://www.harmless.de/cocoa-code.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM