当前位置: 首页 > article >正文

API::CreateProcess()创建进程失败 返回1

一、CreateProcess 函数定义

BOOL CreateProcess 
( 
LPCTSTR lpApplicationName, //可执行文件的路径
LPTSTR lpCommandLine, //用于指定传递给新进程的命令行参数
LPSECURITY_ATTRIBUTES lpProcessAttributes,//默认NULL
LPSECURITY_ATTRIBUTES lpThreadAttributes, //默认NULL
BOOL bInheritHandles, //默认FALSE
DWORD dwCreationFlags, //设置新进程创建的方式,可使用NORMAL_PRIORITY_CLASS
LPVOID lpEnvironment, //默认NULL
LPCTSTR lpCurrentDirectory, //默认NULL
LPSTARTUPINFO lpStartupInfo, //指向一个STARTUPINFO或STARTUPINFOEX的结构,一般应用程序会仅使用默认值,可以全部置零
LPPROCESS_INFORMATION lpProcessInformation //是一个指向LPPROCESS_INFOMATION结构的指针
); 

具体详细的函数介绍可以参考这篇博客:https://blog.csdn.net/baidu_29198395/article/details/82926348

二、CreateProcess()创建返回1的原因

在我的项目里面并没有使用第一个参数的,而是使用null,所以必须使用第二个参数lpCommandLine,这个参数用于指定传递给新进程的命令行参数,由于我们没有使用第一个参数,所以需要把可执行文件名也包含在lpCommandLine内,lpCommandLine格式如下,第一个参数Control_Station_Win 为执行文件名,后面的就是传递给main函数的参数,所以传入参数需要与int main(int ,int )主函数参数对应。

::sprintf(szCmdLine, "Control_Station_Win %s %d", str1,n);

由于我需要创建的进程main函数只有一个参数所以使用下面的格式:

TCHAR szCmdLine[512]{};
::sprintf(szCmdLine, "Control_Station_Win %s ", str);

我出错的原因有两个,

一、szCmdLine没有初始化

二、%s后面没有加空格

因为szCmdLine该参数的类型是LPTSTR,即一个以’0’结尾的char*的C传统字符串,而关键在于:每个参数以空格隔开,所以第二个参数后面需要加一个空格。如下图所示。

通过这次的bug使我对CreateProcess函数有了更深刻的认识。

 

 

http://www.lryc.cn/news/2418900.html

相关文章:

  • 企业网站建设需要多少钱?定制开发费用报价在3000-4000元
  • 什么是线程和应用?线程和进程区别是什么?
  • 软件性能测试怎么做?有哪些常见的技术指标?
  • Python接口测试实战- 接口测试理论
  • Android组织首选项PreferenceScreen及首选项框架 ListPreference
  • http://www.51voa.com/VOA_Special_English/
  • 使用VMware安装Ubuntu虚拟机和VMware Tools
  • 09 内核开发-避免冲突和死锁-spinlock
  • ioctl函数详细说明
  • input标签的各种属性
  • PostgreSQL数据库事务系统——获取事务ID
  • Delphi各个版本的官方下载地址
  • 设计师创业的几种低成本思路
  • “lnk是什么文件 编程“ -> “在编程中,lnk文件的作用和特点“
  • (6)脱壳
  • 朋友圈(拉姆齐定理)- HDU 6152
  • ***工具大全
  • Verilog复杂逻辑设计指南-奇偶校验生成器和校验器及筒式移位器
  • 太吾绘卷第一世攻略_中国文学史上的各种类别的“第一”(史书类)
  • MyEclipse6.5下载地址(含注册码)
  • 论通才与专才
  • 同一Linux下安装两个版本的MySQL(转载)
  • 如何删除带有密码的赛门铁克企业版客户端?
  • Android下nativenbsp;code(C++)的编…
  • OpenHarmony(鸿蒙南向)——平台驱动开发【MMC】
  • Linux下more命令C语言实现实践
  • 如何刻录光盘镜像文件?
  • 基于HTML+CSS+JavaScript仿淘宝购物商城设计毕业论文源码
  • 电脑速记技术考证
  • 经典shell运维实用脚本(非常详细)零基础入门到精通,收藏这一篇就够了