tom*_*136 6 php c linux string parameter-passing
在Linux下,如果我想将纯字符串从PHP传递给C,我该怎么做?我尝试过的是:
exec("./myexec.bin -a mystring");
Run Code Online (Sandbox Code Playgroud)
在PHP和
getopt(argc,argv, "a:");
Run Code Online (Sandbox Code Playgroud)
在C.
一切正常,但是当我传递字符串而不是MAX_ARG_STRLEN(131072)时,它将不再返回0而是返回127,这是命令未找到....
有没有其他方法将字符串数据传递给Linux可执行文件?还是有办法克服这个MAX_ARG_STRLEN问题?
您可以使用popen()打开可执行文件的管道:
$fp = popen('./myexec.bin', 'w');
fwrite($fp, $data);
pclose($fp);
Run Code Online (Sandbox Code Playgroud)
然后,如前所述,从stdinC程序中读取:
fopen(stdin, "r");
// ...
Run Code Online (Sandbox Code Playgroud)
使用popen()它比使用"更安全",而不是exec('/bin/echo')因为你可以编写本来由shell(&,|,...)解释的字符.请注意,popen() 必须关闭从PHP返回的句柄pclose().
| 归档时间: |
|
| 查看次数: |
2115 次 |
| 最近记录: |