繁体   English   中英

NSTask通过/ bin / sh或/ bin / bash问题发送自变量Cocoa Objective-C

[英]NSTask sending an argument through /bin/sh or /bin/bash problem Cocoa Objective-C

基本上,我已经通过/ bin / bash“ [path]”或/ bin / sh“ [path]”在终端中传递了脚本,并且我已经通过/ bin / bash -c“ [command ]”或/ bin / sh -c“ [命令]”。 两种方式均能正常工作。 但是在我的Cocoa应用程序中,当我尝试使用NSTask做完全相同的事情(使用/ bin / bash或/ bin / sh)时,该应用程序似乎永远不会响应。 就像程序被卡在bash或sh内一样。 我尝试使用和不使用waitUntilExit来执行此操作,并且还尝试使用终止。 仍然没有运气。 是否还有其他人遇到过这个问题或是否知道为什么会发生这种情况?

谢谢!

PS:我现在不在我的工作计算机上,但是,如果需要,我可以稍后提供代码。

好。 因此,我为其他可能需要的人找到了解决方案。 基本上,有一个问题是standardInput。 该问题仅在Xcode控制台中显示,而不是您的应用程序中的错误/错误。 解决方法是添加以下行(基本上将standardInput设置为random):

[task setStandardInput: [NSPipe pipe]];

在上述解决方案中,task是所使用的NSTask的变量名。

另请参阅:

http://www.cocoadev.com/index.pl?HowToPipeCommandsWithNSTask

[proc setLaunchPath:@"/bin/bash"];
[proc setArguments:[NSArray arrayWithObjects: @"-c", @"/usr/sbin/netstat -rn | /usr/bin/grep default", nil]];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM