C++多进程数据共享

本文详细介绍了如何在C++中使用多进程实现数据共享,包括创建子进程、检测进程状态、创建共享内存以存储图片数据,并展示了读写图片的完整流程。重点讲解了共享内存的创建与管理,以及如何通过MatHeader结构传递图片信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++多进程数据共享
1.创建子进程

int process_1(wchar_t commandLine2[]) {
   
   
	STARTUPINFO si = {
   
    sizeof(STARTUPINFO) };//在产生子进程时,子进程的窗口相关信息
	PROCESS_INFORMATION pi;                  //子进程的ID/线程相关信息
	DWORD returnCode;//用于保存子程进的返回值;
	//wchar_t commandLine2[] = L"../x64\\Debug\\exe_a\\py_to_c";     //测试命令行参数二
	BOOL bRet = CreateProcess(              //调用失败,返回0;调用成功返回非0;
		NULL,                               //一般都是空;(另一种批处理情况:此参数指定"cmd.exe",下一个命令行参数 "/c otherBatFile")
		commandLine2,                       //进程路径,例 L"C:\\Users\\ps\\Desktop\\c++_into_python\\python_to_c-1\\process_2\\x64\\Debug\\process_2",不需要.exe后缀        
		NULL,                               //_In_opt_    LPSECURITY_ATTRIBUTES lpProcessAttributes,
		NULL,                               //_In_opt_    LPSECURITY_ATTRIBUTES lpThreadAttributes,
		FALSE,                              //_In_        BOOL                  bInheritHandles,
		CREATE_NEW_CONSOLE,                 //新的进程使用新的窗口。显示窗口CREATE_NEW_CONSOLE  隐藏窗口CREATE_NO_WINDOW
		NULL,                               //_In_opt_    LPVOID                lpEnvironment,
		NULL,                               //_In_opt_    LPCTSTR               lpCurrentDirectory,
		&si,                                //_In_        LPSTARTUPINFO         lpStartupInfo,
		&pi);                               //_Out_       LPPROCESS_INFORMATION lpProcessInformation

	if (bRet)
	{
   
   
		std::cout << "process is running..." << std::endl;
		//等待子进程结束
		//WaitForSingleObject(pi.hProcess, -1);
		std::cout << "process is finished" << std::endl;
		//获取子进程的返回值
		GetExitCodeProcess(pi.hProcess, &returnCode);
		std::cout << "process return code:" << returnCode << std::endl;
	}
	else
	{
   
   
		std::cout << "Create Process error!" << std::endl;
		return 0;
	}
	//getchar();
	CloseHandle(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值