创建进程

本文详细介绍了进程的概念及其组成元素,解释了进程是如何通过至少一个线程来执行代码的。此外,还深入探讨了CreateProcess函数的使用方法,包括参数说明及示例代码。

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

进程的概念:

进程

  进程是当前操作系统下一个被加载到内存的、正在运行的应用程序的实例。每一个进程都是由内核对象和地址空间所组成的,内核对象可以让系统在其内存放有关进程的统计信息并使系统能够以此来管理进程,而地址空间则包括了所有程序模块的代码和数据以及线程堆栈、堆分配空间等动态分配的空间。进程仅仅是一个存在,是不能独自完成任何操作的,必须拥有至少一个在其环境下运行的线程,并由其负责执行在进程地址空间内的代码。在进程启动的同时即同时启动了一个线程,该线程被称作主线程或是执行线程,由此线程可以继续创建子线程。如果主线程退出,那么进程也就没有存在的可能了,系统将自动撤消该进程并完成对其地址空间的释放。

 

 

CreateProcess()函数的原型声明如下:  

  BOOL CreateProcess(
   LPCTSTR lpApplicationName, // 可执行模块名
   LPTSTR lpCommandLine, // 命令行字符串
   LPSECURITY_ATTRIBUTES lpProcessAttributes, // 进程的安全属性
   LPSECURITY_ATTRIBUTES lpThreadAttributes, // 线程的安全属性
   BOOL bInheritHandles, // 句柄继承标志
   DWORD dwCreationFlags, // 创建标志
   LPVOID lpEnvironment, // 指向新的环境块的指针
   LPCTSTR lpCurrentDirectory, // 指向当前目录名的指针
   LPSTARTUPINFO lpStartupInfo, // 指向启动信息结构的指针
   LPPROCESS_INFORMATION lpProcessInformation // 指向进程信息结构的指针
  );

 

 STARTUPINFO si;
 PROCESS_INFORMATION pi;
 LPTSTR szCmdline=_tcsdup(TEXT("D://Program Files//Tencent//QQ//Bin//QQ.exe"));

 ZeroMemory( &si, sizeof(si) );

 si.cb = sizeof(si);

 ZeroMemory( &pi, sizeof(pi) );

 // Start the child process.
 if( !CreateProcess( NULL,   // No module name (use command line)

  szCmdline,      // 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
  )
 {

//若失败

  CString strError;
  strError.Format(TEXT("CreateProcess failed (%d)./n"), GetLastError());
  MessageBox(strError);

  return TRUE;
 }

 

 // Wait until child process exits.

 WaitForSingleObject( pi.hProcess, INFINITE );

 // Close process and thread handles.
 CloseHandle( pi.hProcess );
 CloseHandle( pi.hThread );切断和母进程联系

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值