C++获取外部exe程序的返回值

在自己的C++控制台程序里调用外部的7za.exe命令行工具,需要得到7za的返回值,以确定解压缩是否成功。


7-Zip 返回以下退出代码:

代码        含义 
0                 没有错误 
1                 警告(非严重错误)。比如一个或多个文件被其他程序锁定,它们将不会被压缩。 
2                 严重错误。
7                 命令行错误。
8                 操作所需要的内存不足。
255         用户中止了处理过程。


要执行的命令行例如: D:\7za.exe a D:\nv1.zip D:\test\*.*


测试代码如下:

#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
STARTUPINFOA si;
PROCESS_INFORMATION pi;
 
ZeroMemory(&pi,   sizeof(pi)); 
ZeroMemory(&si,   sizeof(si)); 
si.cb=sizeof(STARTUPINFOA); 
 
TCHAR cmd[256] = _T("D:\\7za.exe a D:\\nv1.zip D:\\test\\*.*");
BOOL working = ::CreateProcess(NULL,cmd,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS ,NULL,NULL,&si,&pi);
 
if (working == 0)
{
DWORD error = GetLastError();
cout << "CreateProcess Error : " << error << endl;
getchar();
return 0;
}
 
WaitForSingleObject(pi.hProcess, INFINITE);
 
unsigned long Result;  
GetExitCodeProcess(pi.hProcess, &Result);
 
cout << "Exit Code : " << Result << endl;
getchar();
 
return 0;
}

运行结果:

7-Zip (A) 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
 
Scanning
 
Updating archive D:\nv1.zip
 
Compressing  abc.txt
Compressing  add.jnt
 
Everything is Ok
Exit Code : 0


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值