Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP调用C程序_Php_C - Fatal编程技术网

用PHP调用C程序

用PHP调用C程序,php,c,Php,C,我用C编写了一个小型数据库引擎,它通过读取控制台中输入的命令来工作,并输出结果。 我是否可以编写一些PHP代码,将参数发送到控制台并将输出接收回PHP,而无需重新启动编译的程序。 有更好的方法吗?您说希望PHP在不重新启动编译程序的情况下向您的程序发送和接收消息 因此,我不认为使用shell_exec或proc_open会按照您的意愿工作,因为这些命令都会加载编译程序的新实例 相反,我建议您研究,以及如何重写数据库引擎以使用这些引擎而不是STDIN/STDOUT。然后可以使用PHP在应用程序之间

我用C编写了一个小型数据库引擎,它通过读取控制台中输入的命令来工作,并输出结果。 我是否可以编写一些PHP代码,将参数发送到控制台并将输出接收回PHP,而无需重新启动编译的程序。
有更好的方法吗?

您说希望PHP在不重新启动编译程序的情况下向您的程序发送和接收消息

因此,我不认为使用shell_exec或proc_open会按照您的意愿工作,因为这些命令都会加载编译程序的新实例


相反,我建议您研究,以及如何重写数据库引擎以使用这些引擎而不是STDIN/STDOUT。然后可以使用PHP在应用程序之间进行通信。即使PHP脚本被多次点击,您也只能在后台运行编译程序的一个实例。

您有两个选项:首先,使用shell_exec()函数在命令行中调用程序。第二,打开数据库引擎上的一个套接字,并通过它发送请求。@Sakura Kinomoto:他正在询问与他编写的数据库引擎通信的问题,该引擎通过stdin/stdout进行通信。这两个选项都不是他想要的。shell_exec对他想要的是有效的。函数将输出返回到stdout上的程序,但程序需要接受调用参数中的参数。第二个选项需要在引擎上编写更改代码,但这是一个更好的选项。听起来程序不接受参数,因为这样显然需要重新启动它来发送新请求
proc_open
的工作原理与您描述的类似(尽管更简单),并且不需要在引擎中更改代码。您获得了一组stdin/stdout(和stderr)句柄,并使用它们与长时间运行的进程通信…