首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与命令行NSTask -c通信的NSPipe和objective示例

与命令行NSTask -c通信的NSPipe和objective示例
EN

Stack Overflow用户
提问于 2010-07-09 07:10:32
回答 2查看 7.4K关注 0票数 4

有没有人可以给出一个简单的例子,说明如何结合使用NSTask和NSPipe来实现这一点:

查理·AI-通过终端与AI通信

我想使用xcode和objective c为它创建一个不错的图形用户界面。我想有2个NSTextFields用于charlie的响应和用户输入。然后使用send按钮将用户输入发送到命令行,然后获取charlie的响应并将其发布到NSTextField中。

我可以处理图形用户界面的东西(NSTextField等)。但我需要在objective-c编码部分得到帮助。

谢谢!

以利亚

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-10 17:37:48

苹果公司有一些很好的示例代码,展示了如何做到这一点。

TaskWrapper.m包含了所有聪明的东西,但由于您希望能够向任务发送数据,因此需要对其进行一点扩展,如下所示:

代码语言:javascript
复制
[task setStandardInput: [NSPipe pipe]];

要将输入发送到任务,您可以执行以下操作:

代码语言:javascript
复制
[[[task standardInput] fileHandleForWriting] writeData: ...];

要将NSTextField的值转换为数据,可以执行以下操作:

代码语言:javascript
复制
NSData *data = [[inputTextField stringValue] 
                dataUsingEncoding:NSUTF8StringEncoding];

...and要设置子任务的当前工作目录,请使用[NSTask setCurrentDirectoryPath:]

例如:

代码语言:javascript
复制
[task setCurrentDirectoryPath: @"/blah/blah"];
[task setLaunchPath: @"/blah/blah/server.sh"];

.... (other setup code)

[task launch];
票数 4
EN

Stack Overflow用户

发布于 2010-08-17 19:44:10

还有AMShellWrapper示例代码,它改进了莫里亚性。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3208696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档