objective-c - 无法访问 NSTask 启动路径

标签 objective-c cocoa path nsbundle nstask

我在我的 Cocoa 项目中使用以下代码来调用我制作的脚本。该脚本与项目位于同一文件夹中,甚至显示在 Xcode 的“Resources”文件夹下。找到了正确的路径,但它仍然说该路径不可访问。请帮忙。

NSBundle *mainBundle=[NSBundle mainBundle];
NSString *path=[mainBundle pathForResource:@"script" ofType:@"sh"];

NSTask *task = [[NSTask alloc] init];
[task setLaunchPath: path];

NSLog (path);

NSPipe *pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
[task setStandardError: pipe];

NSFileHandle *file = [pipe fileHandleForReading];

[task launch];
[task waitUntilExit];

NSData *data = [ddFile readDataToEndOfFile];

NSString *output = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];

NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
HDSpeed = [f output];

[f release];    
[task release];

我在调试器中得到的输出是:

2010-07-10 17:53:26.384 tester[5023:a0f]/Users/guest/Library/Developer/Xcode/DerivedData/tester-bhukztmqjwoqrwereagsshvtbfqx/Build/Products/Debug/tester.app/Contents/Resources/script.sh

2010-07-10 17:53:26.386 tester[5023:a0f] 启动路径不可访问

最佳答案

[task launch]之前添加这一行:

[task setLaunchPath:@"/bin/sh"];

关于objective-c - 无法访问 NSTask 启动路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3221432/

相关文章:

cocoa - 启动邮件应用程序时 NSWorkspace 抛出错误

objective-c - [NSRegularExpression stringByReplacingMatchesInString] 的意外行为

objective-c - 读取串行数据时 CPU 消耗和延迟较高

linux - 检测操作系统并在 R 中适当更改路径

c# - 如何拒绝玩家移动某条路径?

objective-c - iOS App 版本升级 - Bundle 内容是否被删除?

ios - NSMutableArray 丢失添加的数据

objective-c - CTCallCenter - 调用事件处理程序 - 在后台状态

ios - NSString 中的数值显示在错误的语言环境中

java - 使用 ./gradlew run 执行任务 ':app:compileJava' 失败