与命令行objective-c通信的NSTask和NSPipe示例
有人能举个简单的例子说明如何结合使用NSTask和NSPipe来完成这项工作吗: 查理人工智能-通过终端与人工智能通信 我想使用xcode和objective c为它创建一个漂亮的GUI。我想为charlie的响应和用户输入提供2个NSTEXT字段。然后有一个send按钮将用户输入发送到命令行,然后获取charlie的响应并将其发布到NSTextField中 我可以处理GUI的东西(NSTextField等),但我需要objective-c编码部分的帮助 谢谢与命令行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苹果公司提供了一些很好
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?更新了我的响应以显示如何执行此操作。。。希望有帮助:-)另外,在我发送了一些东西之后,如何从终端获取数据?我不明白莫里里是怎么做到的。