VC++使用_execvpe和_spawnvpe启动程序示例
版权申诉
106 浏览量
更新于2024-09-09
收藏 4KB TXT 举报
"VC++ 在一个程序后运行另一个程序的方法"
在VC++编程中,有时候我们需要在当前程序执行完毕后启动另一个程序。这通常通过调用特定的系统函数来实现,比如`exec()`系列和`spawn()`系列函数。这两个函数族都是C标准库中的过程控制函数,用于在当前进程上下文中启动新的程序。
`exec()`系列函数主要用于替换当前进程的映像,也就是说,当前进程被新启动的程序所替代。这个系列包括`execl()`, `execlp()`, `execlpe()`, `execv()`, `execve()`, 和 `execvpe()`。它们的主要区别在于参数的传递方式和环境变量的处理。例如,`execvpe()`允许我们指定环境变量的同时执行新的程序,如果调用成功,当前进程将不再继续执行,而是由新启动的程序接管。
下面的代码示例展示了如何使用`execvpe()`函数启动`EDIT.COM`:
```c
#include<stdio.h>
#include<process.h>
char*envString[] = {
"COMM_VECTOR=0x63",
"PARENT=LAUNCH.EXE",
"EXEC=EDIT.COM",
NULL};
void main(int argc, char argv) {
_execvpe("EDIT.COM", argv, envString);
printf("If you can read this sentence, the exec didn't happen!\n");
}
```
在这个例子中,如果`_execvpe()`成功执行,程序不会继续执行到`printf()`,因为当前进程已经被`EDIT.COM`替换。如果无法启动`EDIT.COM`,则会继续执行后面的代码,输出错误提示。
另一方面,`spawn()`系列函数则会在当前进程中创建一个新的子进程来运行新的程序,而原始进程会继续执行。`spawn()`系列包括`spawnl()`, `spawnle()`, `spawnlp()`, `spawnlpe()`, `spawnv()`, `spawnve()`, `spawnvp()`以及`spawnvpe()`。这些函数与`exec()`类似,但它们创建的是独立的子进程,而不是替换当前进程。例如,`_spawnvpe()`允许指定环境变量并创建子进程执行程序。
下面的代码示例展示了如何使用`_spawnvpe()`函数,并设置标志 `_P_OVERLAY`,表示等待子进程结束:
```c
#include<stdio.h>
#include<process.h>
char*envString[] = {
"COMM_VECTOR=0x63",
"PARENT=LAUNCH.EXE",
"EXEC=EDIT.COM",
NULL};
void main(int argc, char argv) {
_spawnvpe(_P_OVERLAY, "EDIT.COM", argv, envString);
printf("Spawned EDIT.COM successfully!\n");
}
```
在这个例子中,由于设置了 `_P_OVERLAY` 标志,主程序会等待`EDIT.COM`执行完成后再继续执行后面的代码。
`exec()`系列适用于那些希望完全替换当前进程,让新程序接管的场景,而`spawn()`系列则适合于需要创建子进程并保持父进程继续执行的情况。在选择使用哪个函数时,应根据具体需求来决定。
118 浏览量
315 浏览量
2023-06-02 上传
248 浏览量
140 浏览量

lj_70596
- 粉丝: 101
最新资源
- 一键修复损坏Office模板文件工具发布
- SQL Server期末复习:数据库管理与商业智能工具
- GP328中文版寫頻程序CPS_R06.10.09詳解
- React Native图表绘制实践:ART应用与第三方框架对比
- 实现自定义电子托盘窗口定位的JavaScript工具
- Java数据处理:行转列的实用示例分析
- jQuery实现动态背景图片效果教程
- HTML网页制作实战教程与资源分享
- 搜狗输入法截图工具体验:QQ风格,快捷操作
- 平台工具r10版更新发布 Android SDK平台工具
- 支付宝批量退款有密接口及服务器回调演示
- Ext中文API手册:全面解析EXT框架指南
- Woku no Pico智能警报:Snowday '17夺冠作品
- 探索HTML在arkhosic.github.io项目中的应用
- 使用jQuery实现点击触发的登录窗口功能
- USBoot v1.7:制作U盘启动盘的简易工具