1

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

谢谢!

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

4

2 回答 2

1

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

[task setStandardInput: [NSPipe pipe]];

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

于 2010-07-11T22:20:19.487 回答
0

另见:

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]];
于 2010-07-12T10:03:35.610 回答