CreateProcess报错,GetErrorCode是2,请高手帮忙解决问题……

sxkdz 2011-01-26 03:25:40
cmd_command=" /c "+src_file+"<"+in_file+">"+c_ou_file;
CreateProcess("cmd.exe",(char*)(cmd_command.c_str()),NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi);
DWORD dw = GetLastError();
cerr<<"Error Code: "<<dw<<endl;
问题出在这一段
很奇怪…………请高手帮忙解答,谢谢!
...全文
1650 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
healer_kx 2011-01-26
  • 打赏
  • 举报
回复
估计是你的路径拼错了。
辰岡墨竹 2011-01-26
  • 打赏
  • 举报
回复
如果不用cmd.exe,直接仿照这篇文章的代码,把你需要读写文件的过程填进去就可以了:
http://support.microsoft.com/kb/190351/zh-cn
不过我觉得cmd.exe更简练一些。CreateProcess的第一个参数可以直接传NULL,第二个参数传完整命令。我之所以要GetSystemDirectory(),是怕有假冒的cmd.exe钓鱼。如果不怕的话:
strCmdLine.Format(_T("/c \"%s\" < \"%s\" > \"%s\""), src_file, in_file, out_file);
CreateProcess(_tcsdup(_T("cmd.exe")), (LPCTSTR) strCmdLine, /*.其他省略.*/);
「已注销」 2011-01-26
  • 打赏
  • 举报
回复
我自己怎么做啊…………
辰岡墨竹 2011-01-26
  • 打赏
  • 举报
回复
这样啊……那就完全不用cmd.exe了,你自己做就可以了!!!
「已注销」 2011-01-26
  • 打赏
  • 举报
回复
…………我的目的是创建str_file这个进程
然后把标准输入重定向到in_file
标准输出重定向到ou_file
辰岡墨竹 2011-01-26
  • 打赏
  • 举报
回复
另外如果你传入的文件名包含空格什么的,一定要用双引号括起来。
CreateProcess也可以不传入参数的,lpCommandLine写全指令。

LPTSTR szCmdPath[MAX_PATH] = {'\0'};
CString strCmdLine[MAX_PATH];
GetSystemDirectory(szCmdPath, MAX_PATH);
strCmdLine.Format(_T("\"%s\\cmd.exe\" /c \"%s\" < \"%s\" > \"%s\""), szCmdPath, src_file, in_file, out_file);
CreateProcess(NULL, (LPCTSTR) strCmdLine, /*.其他省略.*/);
wltg2001 2011-01-26
  • 打赏
  • 举报
回复
你的目的是什么呢?说清楚一点好一点。
「已注销」 2011-01-26
  • 打赏
  • 举报
回复
饿,我回了多少次帖

……………………
system函数根本没多大用处
我还要测str_file是否超时
system难道能获取句柄么???
辰岡墨竹 2011-01-26
  • 打赏
  • 举报
回复
啊,那个“_T”是多余的,我查了查手册,忘记system是ANSI的。Unicode版本的是_wsystem,所以不用“_T”。
辰岡墨竹 2011-01-26
  • 打赏
  • 举报
回复
抱歉,我看错了……看到上面有人回复的东西,结果不一样……
LZ你直接用System函数就可以调用Cmd.exe的……
比如system(_T"dir *.txt > a.txt");
这样的。
「已注销」 2011-01-26
  • 打赏
  • 举报
回复
哦!!!
那怎么办呢,
我要实现的就是命令行的重定向
辰岡墨竹 2011-01-26
  • 打赏
  • 举报
回复
没用的,重定向是Shell(Windows是命令提示符)才有的概念,并不是Windows API里支持的,你直接用CreateProcess是把这参数传给那个程序,程序没有义务去处理那个。而且<和>是非法的文件名字符,当然会错误了。
「已注销」 2011-01-26
  • 打赏
  • 举报
回复
就算改了也没用捏
「已注销」 2011-01-26
  • 打赏
  • 举报
回复
这不是参数
是windows定义的重定向…………
见习学术士 2011-01-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sxkdz 的回复:]
我改成这样了
string str_cmd = "\"";
str_cmd = str_cmd +src_file+"\""+"<"+in_file+">"+c_ou_file;
CreateProcess(NULL,(char*)str_cmd.c_str(),NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi);
但是error co……
[/Quote]

如果是EXE文件怎么会有错呢。
str_cmd = str_cmd +src_file+"\""+"<"+in_file+">"+c_ou_file;
这个参数之间要加空格
str_cmd = str_cmd +src_file+"\" "+"< "+in_file+" > "+c_ou_file;
「已注销」 2011-01-26
  • 打赏
  • 举报
回复
不是的
str_file是不确定的
我只能知道它是可执行文件
怎么拼字符串呢
sad_4978 2011-01-26
  • 打赏
  • 举报
回复
那就是自己拼出来一个字符串吧。
配置以下操作系统的环境变量是不是可以解决,可以尝试一下。
「已注销」 2011-01-26
  • 打赏
  • 举报
回复
问题是这个程序要求的就是相对路径呢
str_file是由main传来的
sad_4978 2011-01-26
  • 打赏
  • 举报
回复
写一个绝对路径,就可以了。
如:c:\windows\system32\cmd.exe。
见习学术士 2011-01-26
  • 打赏
  • 举报
回复
你命令行是怎么输入的?
加载更多回复(5)
标题SpringBoot中小学教育辅导系统设计与实现AI更换标题第1章引言介绍中小学教育辅导系统的研究背景、意义、现状以及论文的方法和创新点。1.1研究背景与意义分析当前中小学教育辅导的现状及系统开发的重要性。1.2国内外研究现状探讨国内外中小学教育辅导系统的发展现状与趋势。1.3研究方法以及创新点概述本文的研究方法,阐述系统的创新点。第2章相关理论介绍SpringBoot框架及教育辅导系统相关理论。2.1SpringBoot框架概述介绍SpringBoot框架的特点、优势及在系统开发中的应用。2.2教育辅导系统理论基础阐述教育辅导系统的基本理论,包括学习理论、教学理论等。2.3系统开发相关技术概述系统开发过程中涉及的其他关键技术,如数据库技术、前端技术等。第3章系统需求分析与设计对中小学教育辅导系统进行详细的需求分析与设计。3.1需求分析分析系统的功能需求、性能需求及用户需求。3.2系统架构设计设计系统的整体架构,包括前后端分离架构、模块划分等。3.3数据库设计设计系统的数据库结构,包括表结构、关系等。第4章系统实现详细介绍中小学教育辅导系统的实现过程。4.1开发环境搭建介绍系统开发所需的环境配置及工具选择。4.2功能模块实现阐述各个功能模块的实现过程,包括用户管理、课程管理、学习资源管理等。4.3系统测试与优化对系统进行测试,包括单元测试、集成测试等,并对系统进行优化。第5章系统应用与效果分析对中小学教育辅导系统的应用效果进行分析。5.1系统应用情况介绍系统在实际应用中的情况,包括用户反馈、使用数据等。5.2效果评估与分析从教学效果、用户体验等方面对系统进行评估与分析。5.3对比方法分析通过与传统教育辅导方式对比,凸显系统优势。第6章结论与展望总结中小学教育辅导系统的设计与实现成果,并展望未来的研究方向。6.1研究结论概括系统的主要功能、特点及创新点。6.2展望指出系统
内容概要:本文详细介绍了一种欠定盲源分离方法,并深入探讨其在模态识别中的应用,重点依托Matlab代码实现相关算法流程。该方法针对传感器数量少于源信号数量的“欠定”情形,通过稀疏表示、时频分析与独立成分分析(ICA)等核心技术,从混叠振动信号中高效分离出原始模态信号,进而提升结构模态参数识别的精度与鲁棒性。研究紧密结合工程实际,适用于复杂结构的振动分析、故障诊断与健康监测,为信号处理与结构动力学交叉领域提供了可复现的技术路径。; 适合人群:具备信号处理、线性代数及Matlab编程基础的研究生、科研人员与工程技术人员,尤其适合从事机械、土木、航空航天等领域中结构动力学分析与状态监测的相关工作者。; 使用场景及目标:① 掌握欠定盲源分离的基本理论与算法实现流程;② 将该方法应用于实际工程中的模态参数识别,如桥梁、风机叶片等大型结构的振动信号分离与故障特征提取;③ 借助提供的Matlab代码进行算法复现、性能测试与二次开发,服务于科研论文撰写、项目攻关或工业检测系统开发。; 阅读建议:建议读者结合理论推导与Matlab代码同步研读,重点关注信号混合模型构建、稀疏成分提取、时频掩膜设计及分离效果评估等关键环节,并尝试在真实或仿真数据集上进行实验验证与参数调优,以深入理解方法的适用边界与优化潜力。
源码链接: https://pan.quark.cn/s/3302e37bc21e 【热电偶测温机制】 热电偶作为一类普遍应用的温度感应装置,其运行机制依托于塞贝克现象,具体而言,当由两种不同金属或半导体材料A与B构成的闭合回路的两端存在温度梯度时,回路内部会感应出电压。该电压值与两个接点间的温差呈现正相关性。K型热电偶即为其中一种应用广泛的型号,该类型热电偶主要由镍铬(NiCr)以及镍铝(NiAl)合金构成,并展现出优良的一致性和精确度。 【MAX6675芯片概述】 MAX6675是由Maxim公司研发的一种高度集成的热电偶接口组件,该组件内嵌了冷端补偿及数字转换功能。它能够将热电偶产生的微弱电压信号转化为数字形式的数据,从而便于微控制器进行读取和运算处理。该芯片内部配置了12位Σ-Δ型模数转换器,能够提供高等级的温度测量精度,并且配备了SPI串行通信接口,有助于与各类微控制器设备进行顺畅的数据交换。 【C语言编程实践】 在采用C语言进行编程时,与MAX6675芯片进行交互一般遵循以下流程: 1. 进行SPI接口的初始化工作:设定SPI时钟的速率、操作模式以及数据传输的方向,以此确保与MAX6675的通信协议相吻合。 2. 发送指令以获取温度信息:经由SPI接口发送用于读取温度的指令,芯片将会反馈包含当前温度数值的12位二进制数据。 3. 实施数据解析操作:接收并分析返回的二进制数据,将其转化为具体的温度数值。值得注意的是,MAX6675所提供的温度数据为14位格式,其中包含两位用于表示符号位,剩余的12位则代表实际温度值。 4. 执行冷端温度补偿:由于热电偶所测量的是温度差值,因此还需考虑芯片自身的温度(即冷端温度),可以通过额外的温度感应装置或进行...

15,465

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧