【发布时间】:2011-11-19 09:18:26
【问题描述】:
在 Linux 下,如果我想将纯字符串从 PHP 传递到 C,我该怎么做? 我到目前为止所做的是:
exec("./myexec.bin -a mystring");
在 PHP 中和
getopt(argc,argv, "a:");
在 C 中
一切正常,但是当我传递的字符串长度超过MAX_ARG_STRLEN (131072) 时,它将不再返回 0,而是返回 127,即找不到命令....
还有其他方法可以将字符串数据传递给 linux 可执行文件吗?或者有什么办法可以克服MAX_ARG_STRLEN 的问题?
【问题讨论】:
-
只是补充一下,我传递的字符串可能超过 393216 个字符,因为 ((256^2)*6)*2;我想将它们存储在一个文件中,但它的大小几乎为 1MB,@Linus Kleen 解决方案目前是我迄今为止最好的解决方案
-
它真的只是一个字符串还是你想要传递的数据结构?
-
经过一些实验,我得出结论 proc_open() 更好,因为它同时提供标准输入和标准输出,而 popen() 只提供输入或输出
标签: php c linux string parameter-passing