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’)是“更安全”的,因为你可以编写本来由shell解释的字符(&,|,…).请注意,必须使用pclose()关闭从PHP的popen()返回的句柄.