参考: https://blog.csdn.net/weixin_43903378/article/details/105297406
#ifndef DZTOOL_CMDPIPE_H
#define DZTOOL_CMDPIPE_H
#include <thread>
#include <chrono>
//输出回调函数, 数据+长度
typedef void(*cmdpipe_callback)(char *, int);
class dztool_cmdpipe
{
public:
//设置单体类, 方便不同模块设置命令, 统一输出
static dztool_cmdpipe * GetInstance();
//单体类实体
static dztool_cmdpipe * Instance;
private:
dztool_cmdpipe();
~dztool_cmdpipe();
private:
//回调函数
cmdpipe_callback dzcallback;
//命令输出的读取管道
void * read_pipe_file;
//命令执行的写入管道
void * write_pipe_file;
//接受命令
char * str_commond;
//接收数据
char * str_buffer;
//接收数据长度
int str_buffer_length;
private:
std::thread th_read;
std::thread th_wait;
bool mb_running;
//读取通道的线程
void PipeReadThread();
//启动命令的线程
void PipeWaitThread();
public:
//先设置回调函数
int SetCallBack(cmdpipe_callback callfun);
//在设置执行命令
int