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

与命令行objective-c通信的NSTask和NSPipe示例,objective-c,xcode,user-interface,nstask,Objective C,Xcode,User Interface,Nstask,有人能举个简单的例子说明如何结合使用NSTask和NSPipe来完成这项工作吗: 查理人工智能-通过终端与人工智能通信 我想使用xcode和objective c为它创建一个漂亮的GUI。我想为charlie的响应和用户输入提供2个NSTEXT字段。然后有一个send按钮将用户输入发送到命令行,然后获取charlie的响应并将其发布到NSTextField中 我可以处理GUI的东西(NSTextField等),但我需要objective-c编码部分的帮助 谢谢 Elijah苹果公司提供了一些很好

有人能举个简单的例子说明如何结合使用NSTask和NSPipe来完成这项工作吗:

查理人工智能-通过终端与人工智能通信

我想使用xcode和objective c为它创建一个漂亮的GUI。我想为charlie的响应和用户输入提供2个NSTEXT字段。然后有一个send按钮将用户输入发送到命令行,然后获取charlie的响应并将其发布到NSTextField中

我可以处理GUI的东西(NSTextField等),但我需要objective-c编码部分的帮助

谢谢


Elijah

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

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

[任务设置标准输入:[NSPipe pipe]];
要向任务发送输入,您可以执行以下操作:

[[[task standardInput]fileHandleForWriting]writeData:…];
要将NSTextField的值转换为数据,可以执行以下操作:

NSData*data=[[InputExtField stringValue]
数据使用编码:NSUTF8StringEncoding];
…要设置子任务的当前工作目录,请使用

e、 g

[task setCurrentDirectoryPath:@”/blah/blah];
[task setLaunchPath:@/blah/blah/server.sh];
.... (其他设置代码)
[任务启动];

还有改进moriarity的AMShellWrapper示例代码


1还有一件事……我如何发送“cd/blah/blah”,然后发送“/server.sh”来启动charlie?更新了我的响应以显示如何执行此操作。。。希望有帮助:-)另外,在我发送了一些东西之后,如何从终端获取数据?我不明白莫里里是怎么做到的。