gpt4 book ai didi

php - 在 Linux 中的 PHP 和 C 可执行文件之间传递数据

转载 作者:IT王子 更新时间:2023-10-29 00:45:53 27 4
gpt4 key购买 nike

在 Linux 下,如果我想将纯字符串从 PHP 传递到 C,我该怎么做?我试过的是:

exec("./myexec.bin -a mystring");

在 PHP 中

getopt(argc,argv, "a:");

在 C 中

一切正常,但是当我传递长度超过 MAX_ARG_STRLEN (131072) 的字符串时,它将不再返回 0,而是返回 127,这是找不到命令....

还有其他方法可以将字符串数据传递给 linux 可执行文件吗?或者有什么方法可以克服 MAX_ARG_STRLEN 问题?

最佳答案

你可以使用 popen()打开可执行文件的管道:

$fp = popen('./myexec.bin', 'w');
fwrite($fp, $data);
pclose($fp);

然后,如前所述,在您的 C 程序中从 stdin 读取:

fopen(stdin, "r");
// ...

使用 popen() 而不是 exec('/bin/echo') 是“更安全”的,因为您可以编写否则会被外壳(&、|、...)。请注意,从 PHP 的 popen() 返回的句柄必须pclose() 关闭。

关于php - 在 Linux 中的 PHP 和 C 可执行文件之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8193067/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com