1、Window操作系统通过CreateProcess系统调用创建进程,查看进程创建的参数及返回值信息。
时间: 2024-02-17 19:00:33 浏览: 179
好的,这是一个关于操作系统的问题。你可以使用以下代码来创建一个进程并获取相关信息:
```c++
#include <windows.h>
#include <iostream>
int main()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
// Create the process
if (!CreateProcess(NULL, // No module name (use command line)
"C:\\Windows\\System32\\notepad.exe", // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi) // Pointer to PROCESS_INFORMATION structure
)
{
std::cout << "CreateProcess failed (" << GetLastError() << ").\n";
return 1;
}
// Wait until child process exits.
WaitForSingleObject(pi.hProcess, INFINITE);
// Get the exit code of the process
DWORD exitCode;
if (!GetExitCodeProcess(pi.hProcess, &exitCode))
{
std::cout << "Failed to get exit code of process (" << GetLastError() << ").\n";
}
else
{
std::cout << "Exit code of process: " << exitCode << ".\n";
}
// Close process and thread handles.
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return 0;
}
```
这段代码会创建一个新的进程,启动记事本应用程序。通过调用 `CreateProcess` 函数,我们可以传递参数来指定要创建的进程和它的启动方式。在这个例子中,我们使用了 `notepad.exe` 作为要启动的程序。
在创建进程之后,我们需要等待子进程退出,然后使用 `GetExitCodeProcess` 函数获取子进程的退出码。最后,我们需要关闭进程和线程的句柄,以释放相应的资源。
希望这个例子对你有所帮助!
阅读全文