【发布时间】:2013-01-01 23:26:37
【问题描述】:
我对包含 NSTask 的方法有一个非常奇怪的问题。在 10.7+ 中,该功能运行良好并成功执行,返回结果并将文件复制到所需目录。
在 10.6.8 中尝试我的应用程序时,NSTask 似乎什么都不做,实际上没有错误,或者任何提示我为什么它不工作的东西。我已经尝试了所有可能的角度来确定问题出在哪里,并且我已经排除了可能性。 :-/
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath: @"/bin/sh"];
NSArray *arguments = [NSArray arrayWithObjects: @"-c",
@"find /Data/*.jug/files/ -name thefile | head -n 1 | awk -v dir=\"$HOME/path/to/copy/to\" '{printf \"cp \\\"%s\\\" \\\"%s\\\"\\n\", $1, dir }' | sh", nil];
[task setArguments: arguments];
NSPipe *thePipe = [NSPipe pipe];
[task setStandardInput:[NSPipe pipe]];
[task setStandardOutput:thePipe];
[task launch];
[task waitUntilExit];
[task release];
如果在 10.6.8 中通过终端尝试该命令,我会得到我希望在我的应用程序中得到的结果。我在这里完全不知所措,真的希望有人能对这个问题以及如何解决它有所了解。
【问题讨论】:
-
我看到您正在使用 setSTandardInput 和 setStandardOutput。您是否尝试过 setStandardError 来查看是否出现了什么?
-
@ericgorr,嗨 - 我已经尝试过
setStandardError并没有得到任何不同,但是,我回顾了我的控制台日志并注意到它出现了:/Data/*.jug: Not a directory- (这是一个目录,虽然 10.6.8 可能从最后的扩展中看不到它?)。 -
如果您对 /Data 执行 ls -l,目录的条目是什么样的?
标签: objective-c cocoa nstask