如何让iOS运行子进程


How to get iOS to run a sub process?

我正在为iOS编写一个应用程序,该应用程序将启动php二进制文件作为子进程。

使用以下代码:

NSString * command = @"/bin/sh -c '";
command = [command stringByAppendingString:[BibleditPaths php]];
command = [command stringByAppendingString:@" -v' > /tmp/php.txt 2>&1"];
int output = system ([command UTF8String]);
NSString* msg = [@(output) stringValue];
NSLog(msg, @"");

php二进制文件可以在越狱的iPad上从命令行启动。这是输出:

PHP 5.4.31 (cli) (built: Aug 19 2014 11:06:21) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

当从上面的代码启动php二进制文件时,iOS会发送SIGKILL信号。php二进制文件不会运行或产生任何输出。

/bin/sh产生以下输出:

sh: line 1:  2806 Killed: 9               /bin/sh -c '/var/mobile/Applications/DFE552CC-ECBE-4A73-82CF-24870E5D9F62/Library/usr/local/bin/php -v' > /tmp/php.txt 2>&1
2014-09-15 17:33:41.676 PHPRunner[2804:60b] 35072

我该怎么做才能让iOS成功运行此进程?

这个问题发布在Apple iOS开发论坛上(https://devforums.apple.com/index.jspa)。

那里的反应是:

"在iOS上,这些都不受支持(或应用程序沙箱允许)。"

随后,该问题被从论坛上删除。

我将答案张贴在这里,以便为公众保留信息。