我正在通过一个/usr/bin/perl或/usr/bin/php运行NSTask,并希望检索程序的headers。我已经对环境进行了适当的格式化(Perl要求env以HTTP_作为前缀),但是除了原始输出之外,这两个任务都没有返回任何其他内容。我已经看过关于NSTask的文档以及php和perl的手册页,也没有看到任何强制headers输出的方法。
有什么想法吗?
编辑:我意识到这是一个古老的问题,但我只是重新发现它,并意识到我应该报告。问题是我应该使用php-cli,而不是php。我必须从源代码下载和编译php-cli,才能像我所期望的那样工作。然而,一旦我做到了,它就像一种魅力。:)
发布于 2009-09-22 04:59:50
您可能必须在输出前加上HTTP头,这是由您基于perl或php脚本的原始输出构建的。
例如,您知道php脚本的原始输出将是内容类型: text/html,并且可以从输出本身获得长度。至少,我认为在实现类似的解决方案时,我就是这样做的。
发布于 2009-09-22 02:34:18
您不能查看或更改另一个进程的环境。例外情况是,您可以更改子进程的环境,但只有在创建该进程时才能更改。因此,您可以设置您的perl或php子进程的初始环境,但是您不能读取它以后有哪些环境,而且您当然不能查看它退出时所处的环境。
您需要使Perl或PHP脚本以某种格式输出其环境,并通过管道将其读入Cocoa进程。
发布于 2009-09-22 21:14:56
脚本在从终端运行时会打印标题吗?如果是这样的话,也许使用-[NSTask setStandard*:] (可能使用NSPipe)可以帮助捕获输出。如果没有,则可能是web服务器在处理CGI时注入标头。
https://stackoverflow.com/questions/1457804
复制相似问题