进程接受进程结束传递的返回码

在工程中我要实现一个这样的功能:A进程创建B进程运行,通过B进程结束时返回的错误码进行下一步的流程。

参考了一些网上的代码,最终形成了这样一份绝对可行的方案。A进程:

if(CreateProcess(NULL,m_file,NULL,NULL,TRUE,CREATE_NEW_PROCESS_GROUP|CREATE_DEFAULT_ERROR_MODE,NULL,NULL,&SI,&PI))
{
		   // Wait until child process exits.
			WaitForSingleObject(PI.hProcess, INFINITE );  

			GetExitCodeProcess(PI.hProcess, &exitCode);

			// Close process and thread handles.
			CloseHandle( PI.hProcess );
			CloseHandle( PI.hThread );

			if (ID_CANCEL == exitCode)
				break;
}

在B进程中,通过PostQuitMessage(exit),发送WM_QUIT消息,然后通过wparam得到错误码

while( msg.message!=WM_QUIT )
{
			if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
			{
				//处理外部消息
				TranslateMessage( &msg );
				DispatchMessage( &msg );
			}
			else
			{

			}

		}
}

	return msg.wParam;
时间: 2024-10-17 22:39:03

进程接受进程结束传递的返回码的相关文章

C# 保护进程不被结束(源代码)防任务管理器结束进程

C# 保护进程不被结束(源代码)防任务管理器结束进程 Posted on 2013-03-25 16:03 快乐家++ 阅读(3173) 评论(3) 编辑 收藏 闲来无事,英语又学的太痛苦.看到我妈妈电脑开起在,就坐上去看看新闻,听听音乐.哎,突然间,老毛病又烦了,想起原来一直有个编程的问题没有解决——禁止别人用任务管理器,结束自己的程序进程(.NET程序).带着这个问题,我开始Google,开始baidu,又开始编程了.和原来的搜索结果一样,什么东西都是一筹莫展,得到的答案永远是:C#没有办法

Linux进程创建和结束

在Linux中,进程的创建由系统调用fork和vfork完成.它们生成一个子进程并且子进程是父进程的一个复制品. Fork系统调用对应的kernel函数是sys_fork,此函数简单的调用kernel函数do_fork.一个简化版的do_fork执行如下: (1)alloc_pid().给新的进程分配一个新的pid,即进程号 (2)copy_process()此函数会做fork的大部分事情,它主要完成讲父进程的运行环境复制到新的子进程,比如信号处理.文件描述符和进程的代码数据等. (3)wake

使用ExitProcess()结束本进程,TerminateProcess()结束进程

进程只是提供了一段地址空间和内核对象,其运行时通过在其地址空间内的主线程来体现的.当主线程的进入点函数返回时,进程也就随之结束.这种进程的终止方式是进程的正常退出,进程中的所有线程资源都能够得到正确的清除.除了这种进程的正常退出方式外,有时还需要在程序中通过代码来强制结束本进程或其他进程的运行.ExitProcess()函数的原型为: void ExitProcess(UINT uExitCode); 其参数uExitCode为进程设置了退出代码.该函数具有强制性,在执行完毕后进程即被结束,因此

记一次WinForm程序中主进程打开子进程并传递参数的操作过程(进程间传递参数)

目标:想在WinForm程序之间传递参数.以便子进程作出相应的处理. 一种错误的方法 父进程的主程序: 1 ProcessStartInfo psi = new ProcessStartInfo(); 2 psi.FileName = "ProcessChild.exe"; 3 psi.Arguments = txtArgs.Text; 4 Process.Start(psi);//主要问题在这里 子进程的主程序: 1 txtArgs.Text = Process.GetCurrent

父进程等待子进程结束

from multiprocessing import Process import time # def task(name): # print("%s start" % name) # time.sleep(3) # # print("%s stop" % name) # # if __name__ == '__main__': # p = Process(target=task,args=("jerry",)) # p.start() #

Linux - 进程 (二) 进程创建

详细见:https://github.com/ZhangzheBJUT/linux 一 进程概述 一个进程都由另一个称之为父进程的进程启动,被父进程启动的进程叫做子进程.Linux系统启动时候,它将运行一个名为init的进程,该进程是系统运行的第一个进程,它的进程号为1,它负责管理其它进程,可以把它看做是操作系统进程管理器,它是其它所有进程的祖先进程.系统中的进程要么是由init进程启动,要么是由init进程启动的其他进程启动. 使用ps命令输出中的PPID栏给出的是父进程的进程ID,它是启动这

linux 进程(二) --- 进程的创建及相关api

一.进程的创建fork()函数 由fork创建的新进程被称为子进程(child process).该函数被调用一次,但返回两次.两次返回的区别是子进程的返回值是0,而父进程的返回值则是 新子进程的进程ID.将子进程ID返回给父进程的理由是:因为一个进程的子进程可以多于一个,所有没有一个函数使一个进程可以获得其所有子进程的进程ID.fork使子进程得到返回值0的理由是:一个进程只会有一个父进程,所以子进程总是可以调用getppid以获得其父进程的进程ID(进程 ID  0总是由交换进程使用,所以一

Linux下1号进程的前世(kernel_init)今生(init进程)----Linux进程的管理与调度(六)

日期 内核版本 架构 作者 GitHub CSDN 2016-05-29 Linux-4.5 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度-之-进程的创建 前言 Linux下有3个特殊的进程,idle进程(PID=0), init进程(PID=1)和kthreadd(PID=2) * idle进程由系统自动创建, 运行在内核态 idle进程其pid=0,其前身是系统创建的第一个进程,也是唯一一个没有通过fork或者kernel_thread产

Python全栈开发——线程与进程(进程)

三 multiprocessing模块 Multiprocessing is a package that supports spawning processes using an API similar to the threading module. The multiprocessing package offers both local and remote concurrency,effectively side-stepping the Global Interpreter Lock