C++创建一个新的进程

原文:http://blog.csdn.net/hk627989388/article/details/53309865

STARTUPINFO用于指定新进程的主窗口特性的一个结构。

PROCESS_INFORMATION在创建进程时相关的数据结构之一,该结构返回有关新进程及其主线程的信息。

[cpp] view plain copy

  1. void CCreateProgressDlg::StartProgress()
  2. {
  3. CString csCommandLine;
  4. char chWindowsDir[MAX_PATH];
  5. char chCommandLine[MAX_PATH];
  6. DWORD dwExitCode;
  7. PROCESS_INFORMATION pi;
  8. STARTUPINFO     si;//用于指定新进程的主窗口特性的一个结构
  9. memset(&si, 0, sizeof(si));
  10. si.cb = sizeof(STARTUPINFO);
  11. si.dwFlags = STARTF_USESHOWWINDOW;
  12. si.wShowWindow = SW_SHOW;//SW_HIDE隐藏窗口
  13. //得到windows目录
  14. GetWindowsDirectory(chWindowsDir, MAX_PATH);
  15. //启动“记事本”程序的命令行
  16. csCommandLine = CString(chWindowsDir) + "\\NotePad.exe";
  17. ::strcpy(chCommandLine, csCommandLine);
  18. //启动“记事本”作为子进程
  19. BOOL ret = CreateProcess(NULL, chCommandLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
  20. if (ret)
  21. {
  22. //关闭子进程的主线程句柄
  23. CloseHandle(pi.hThread);
  24. //等待子进程的退出
  25. WaitForSingleObject(pi.hProcess, INFINITE);
  26. //获取子进程的退出码
  27. GetExitCodeProcess(pi.hProcess, &dwExitCode);
  28. //关闭子进程句柄
  29. CloseHandle(pi.hProcess);
  30. }
  31. }
时间: 2024-10-13 08:54:49

C++创建一个新的进程的相关文章

创建一个新的进程os.fork

import os pid = os.fork()功能:创建新的进程参数:无返回值:失败返回一个负数 成功:在原有进程中返回一个新的进程的PID号 在新的进程中返回0 *子进程会复制父进程全部代码段,包括fork之前产生的内存空间*子进程从fork的下一句开始执行,与父进程互补干扰*父子进程的执行顺序是不一定的,父子进程公用一个终端显示*父子进程通常会根据fork返回值得差异选择执行不同的代码.所以if结构几乎是fork的固定搭配*父子进程空间独立,操作的都是本空间的内容,互补影响*子进程也有自

《Linux内核分析》 第六节 分析Linux内核创建一个新进程的过程

范闻泽 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.实验过程 1.删除原来的menu,并clone新的menu,用test_fork.c覆盖test.c 2. make rootfs之后新的内核启动,测试fork功能 3.使用-s -S冷冻内核,准备调试 4.设置断点 5.根据断点,进行跟踪,得到结果 1.以下是执行指令 cd LinuxKernel rm menu -r

Linux内核分析-分析Linux内核创建一个新进程的过程

作者:江军 ID:fuchen1994 实验题目:分析Linux内核创建一个新进程的过程 阅读理解task_struct数据结构http://codelab.shiyanlou.com/xref/linux-3.18.6/include/linux/sched.h#1235: 分析fork函数对应的内核处理过程sys_clone,理解创建一个新进程如何创建和修改task_struct数据结构: 使用gdb跟踪分析一个fork系统调用内核处理函数sys_clone ,验证您对Linux系统创建一个

分析Linux内核创建一个新进程的过程【转】

转自:http://www.cnblogs.com/MarkWoo/p/4420588.html 前言说明 本篇为网易云课堂Linux内核分析课程的第六周作业,本次作业我们将具体来分析fork系统调用,来分析Linux内核创建新进程的过程 关键词:fork, 系统调用,进程 *运行环境:** Ubuntu 14.04 LTS x64 gcc 4.9.2 gdb 7.8 vim 7.4 with vundle 分析 分析方法说明 PCB包含了一个进程的重要运行信息,所以我们将围绕在创建一个新进程时

第六周分析Linux内核创建一个新进程的过程

潘恒 原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 task_struct结构: struct task_struct {   volatile long state;进程状态  void *stack; 堆栈  pid_t pid; 进程标识符  unsigned int rt_priority;实时优先级  unsigned int policy;调度策略  struct files

分析Linux内核创建一个新进程的过程

一.原理分析 1.进程的描述 进程控制块PCB——task_struct,为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息. struct task_struct{ volatile long state; //进程状态,-1表示不可执行,0表示可执行,大于1表示停止 void *stack; //内核堆栈 atomic_t usage; unsigned int flags; //进程标识符 unsigned int ptrace; …… } 2.进程的创

Linux内核创建一个新进程的过程

进程在创建它的时刻开始存活.在Linux系统中,这通常是fork()系统的结果,该系统调用通过复制一个现有的进程来创建一个全新的进程.只有在创建init进程时,是通过代码实现数据结构的填充.调用fork()的进程称为父进程,新生的进程称为子进程.在系统调用结束时,在返回点这个相同位置上,父进程恢复执行,子进程开始执行.fork()系统调用从内核两次返回:一次回到父进程,另一次回到创建的新的子进程. 进程的描述符--task_struct (下面是中英文大体注释) volatile long st

实验六———分析Linux内核创建一个新进程的过程

分析Linux内核创建一个新进程的过程 攥写人:李鹏举  学号:20132201 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ) 本周要求: 阅读理解task_struct数据结构http://codelab.shiyanlou.com/xref/linux-3.18.6/include/linux/sched.h#1235: 分析fork函数对应的内核处理过

lab6:分析Linux内核创建一个新进程的过程

李俊锋 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.实验原理 1.进程的定义 进程是操作系统的概念,每当我们执行一个程序时,对于操作系统来讲就创建了一个进程,在这个过程中,伴随着资源的分配和释放.可以认为进程是一个程序的一次执行过程. 2.进程与程序的区别 程序时静态的,它是一些保存 在磁盘上得指令的有序集合,没有任何执行的概念. 进程是一个动态的概念,它是程序执行的过程