从我的Cocoa应用程序运行可执行文件“server”。在终端中调用时,可执行文件已经可以完美运行,并且将读取同一目录中的文本文件。
将“server”和其他文件放在Xcode的“Supporting Files”文件夹中。使用NSTask运行“server”:
NSString *path = [[NSBundle mainBundle] pathForResource:@"server" ofType:nil];
NSArray *args = [[NSArray alloc] init];
[NSTask launchedTaskWithLaunchPath:path arguments:args];
可执行文件无法打开文本文件。具体来说,源代码中的C函数fopen("tradingbook_closing.txt", "r")
无法打开该文件。但文件在那里,并在终端中运行可执行文件直接完美无缺。该应用程序不是沙盒。有人能找到问题吗?
非常感谢。
答案 0 :(得分:2)
您正在为文件"tradingbook_closing.txt"
使用相对路径,该路径依赖于当前目录,该进程将包含该文件。这可能是导致错误的原因。
最好不要将相对路径硬连接到程序中,但如果必须,可以使用NSTask
属性设置currentDirectoryPath
启动的进程的当前目录。您需要创建NSTask
实例,而不是使用类方法launchedTaskWithLaunchPath:arguments:
,然后在调用之前设置launchPath
,arguments
和currentDirectoryPath
属性launch
方法。