【问题标题】:NSTask sending an argument through /bin/sh or /bin/bash problem Cocoa Objective-CNSTask 通过 /bin/sh 或 /bin/bash 发送参数问题 Cocoa Objective-C
【发布时间】:2010-07-11 21:21:43
【问题描述】:

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

谢谢!

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

【问题讨论】:

    标签: objective-c cocoa bash shell nstask


    【解决方案1】:

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

    [task setStandardInput: [NSPipe pipe]];
    

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

    【讨论】:

      【解决方案2】:

      另见:

      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]];
      

      【讨论】:

        猜你喜欢
        • 2022-08-19
        • 1970-01-01
        • 2015-04-17
        • 1970-01-01
        • 2011-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-07
        相关资源
        最近更新 更多