windows 子进程获取父进程的方法。
来源:互联网 发布:南大 知乎 编辑:程序博客网 时间:2024/05/18 03:11
子进程获取父进程可以通过微软未公开的一个api实现
NTSTATUS WINAPI NtQueryInformationProcess(
__in HANDLE ProcessHandle,
__in PROCESSINFOCLASS ProcessInformationClass,
__out PVOID ProcessInformation,
__in ULONG ProcessInformationLength,
__out_opt PULONG ReturnLength
);
但是既然未公开,肯定有不公开的理由,这里打算不用这种方式
我的做法是在 父进程创建子进程的时候,传入一个参数,这个参数就是自己的进程id。
父进程:
void startModule1(){std::stringstream ss;ss << "module1 "; //注意这里要有空格,module1就是子进程的 exe 文件名ss << GetCurrentProcessId();std::string moduleName = ss.str();STARTUPINFO si;PROCESS_INFORMATION pi;ZeroMemory( &si, sizeof(si) );si.cb = sizeof(si);ZeroMemory( &pi, sizeof(pi) );// Start the child process. if( !CreateProcess( NULL, LPSTR(moduleName.c_str()) ,NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi)) {return;}hd_dwld = pi.dwProcessId;// Wait until child process exits.WaitForSingleObject( pi.hProcess, INFINITE );// Close process and thread handles. CloseHandle( pi.hProcess );CloseHandle( pi.hThread );handleStop();}
子进程:
int WINAPI WinMain(HINSTANCE hInstance, // handle to current instanceHINSTANCE hPrevInstance, // handle to previous instanceLPSTR lpCmdLine, // command lineint nCmdShow // show state){DWORD pid;char char_main_id [16];sprintf_s(char_main_id , "%s" , &lpCmdLine[0]);pid = atoi(char_main_id);...}
有了 pid,就什么都好说了。。
- windows 子进程获取父进程的方法。
- Windows获取进程的方法
- 获取Windows进程的父进程编号
- Perl获取指定进程的子进程
- 获取子进程的输出
- Linux父进程创建子进程的方法,监控子进程的结束
- 进程管理:通过父进程ID获取子进程ID
- 父进程 子进程
- 父进程子进程
- Windows 获取父进程ID
- windows 创建子进程
- 子进程与父进程的区别:
- windows下 程序里和cmd中获取/查看进程的参数的方法,打开进程
- 如何获取子进程的输出
- 如何获取子进程的输出
- 如何获取子进程的输出
- Linux 获取子进程的返回值
- 获取子进程的退出码
- SICP 习题 (1.22) 解题总结
- j2se总结
- 新浪微博技术架构分析
- hdu 4706
- Android中Handler作用
- windows 子进程获取父进程的方法。
- 应用系统常用性能指标
- android 隐藏API 在源码下编译报错cannot find symbol symbol
- SICP 习题 (1.23) 解题总结
- SQL Server中行列转换 Pivot UnPivot
- SICP 习题 (1.24) 解题总结
- MFC关闭窗口用哪个函数?
- 上班第一天
- 非线性规划问题的matlab求解