无法使用 NSTask 使用 Sandbox 编写
Unable to use NSTask to write using Sandbox
我很难调试 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];
所以它基本上是在启动一个任务,它是我的 运行 应用程序的另一个实例。此任务应该将 source(一个文件)转换为 target(另一个文件)。这仅在激活沙盒时才有效。但即使在沙盒模式下,当我使用我的终端使用传递给 NSTask 的相同参数执行应用程序时,也会创建 target。
感谢您的帮助!
If your app employs a child process created with either the posix_spawn function or the NSTask class, you can configure the child process to inherit the sandbox of its parent.
和:
To enable sandbox inheritance, a child target must use exactly two App Sandbox entitlement keys: com.apple.security.app-sandbox and com.apple.security.inherit. If you specify any other App Sandbox entitlement, the system aborts the child process.
我怀疑分叉自己不会是一个成功的策略,因为这意味着父进程必须只有这两个权利,这在子进程中不是很有用。
我很难调试 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];
所以它基本上是在启动一个任务,它是我的 运行 应用程序的另一个实例。此任务应该将 source(一个文件)转换为 target(另一个文件)。这仅在激活沙盒时才有效。但即使在沙盒模式下,当我使用我的终端使用传递给 NSTask 的相同参数执行应用程序时,也会创建 target。
感谢您的帮助!
If your app employs a child process created with either the posix_spawn function or the NSTask class, you can configure the child process to inherit the sandbox of its parent.
和:
To enable sandbox inheritance, a child target must use exactly two App Sandbox entitlement keys: com.apple.security.app-sandbox and com.apple.security.inherit. If you specify any other App Sandbox entitlement, the system aborts the child process.
我怀疑分叉自己不会是一个成功的策略,因为这意味着父进程必须只有这两个权利,这在子进程中不是很有用。