在c++和php中的程序之间传递大数据
pass large data between programs in c++ and php
我需要在linux上开发两个程序:cpp_prog是一个用c++编写的小程序。它监视消息队列系统。一旦队列系统中有消息可用,程序就会下载该消息,然后调用另一个php程序,比如php_prog,以处理该消息并读取php_prog的输出。php_prog完成后,cpp_pg将重新获得控制并再次侦听消息队列系统。这个过程将永远持续下去。
我的问题是如何将大量数据从c++传递到php并读取php程序的输出。
消息可能很长,所以在c++system("php_prog message_string");
中进行系统调用不是一个好的选择。
我也试过用fifo。在cpp_log 中
int fifo = open(fifo_name.c_str(), O_WRONLY);
write(fifo, msg_string.c_str(), strlen(msg_string.c_str()));
close(fifo);
system("php_prog fifo_name"); //call php_prog with fifo name
在php_prog:中
$fifo = $argv[1];
var_dump($fifo);
$str_content = file_get_contents($fifo);
echo "here is msgn";
var_dump($str_content);
echo "endn";
但是cpp_pg被阻止,直到我从其他地方(例如终端(调用"php_prog fifo_name"来读取fifo。
我愿意接受任何建议(但我确实会避免使用tmp文件(。如果你能提供一个简单的代码,那就太好了。
BR
我最终在c++中使用了popen
,在php中使用file_get_contents
来解决这个问题。
在cpp_prog:中
FILE* fp = popen(cmd.c_str(), "w");
fwrite(msg_string.c_str(), sizeof (char), msg_string.size(), fp);
fflush(fp);
pclose(fp);
在php_prog:中
$msg_content = file_get_contents("php://stdin");
echo "here is msgn";
var_dump($msg_content);
echo "endn";
相关文章:
- 在cuda线程之间共享大量常量数据
- 在c代码之间共享数据的最佳方式
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 如何使用发送数据包所花费的时间计算两个节点之间的距离?
- 线程之间的实时数据共享
- std::weak_ptr 和相应的 std::shared_ptr 之间是否存在数据竞争?
- 在C++事务之间存储大量字符数据的有效方法
- 如何在进程之间共享大量数据而不重复?(国际刑罚委员会)
- 简单使用 std::atomic 在两个线程之间共享数据
- 在 EXE/DLL 之间传递数据
- 如何在自定义 LLVM 传递之间正确传递数据结构
- 如何使用gRPC在客户端和服务器之间双向发送和接收流元数据
- 读取USB与操作系统、C++之间传输的数据
- C++ 中的类之间的数据重新循环 - 错误:'<class name>'未在此范围内声明
- 如何在tensorflow中在gpu和cpu之间拉/推送数据
- 在C++和Python之间交换数据的最快方法是什么?
- C++ - 比较模板和类之间的数据类型
- 如何在Qt中预先建立的窗口之间传递数据?
- 包括数据类型之间的斗争