我很难用NSTask调试问题。
我使用以下命令启动NSTask:
NSTask *convTask = [[NSTask alloc] init];
[convTask setLaunchPath:[[NSBundle mainBundle] executablePath]];
[convTask setArguments: [NSArray arrayWithObjects: @"convTask", source, target, nil]];
[convTask launch];
[convTask waitUntilExit];
[convTask terminate];
所以它基本上是启动一个任务,这是我运行的应用程序的另一个实例。此任务应该将源(文件)转换为目标(另一个文件)。这只有在激活沙盒时才有效。但即使在Sandbox模式下,当我使用我的终端使用传递给NSTask的相同参数执行应用程序时,目标也会被创建。
谢谢你的帮助!
如果您的应用程序使用使用posix_spawn函数或NSTask类创建的子进程,则可以将子进程配置为继承其父进程的沙箱。
和:
要启用沙箱继承,子目标必须使用两个App Sandbox授权密钥:com.apple.security.app-sandbox和com.apple.security.inherit。如果指定任何其他App Sandbox权利,系统将中止子进程。
我怀疑分配自己不会是一个成功的策略,因为这意味着父母必须只拥有这两个权利,这在子进程中不会非常有用。