【发布时间】:2015-07-05 12:34:23
【问题描述】:
我在这里遗漏了一些明显的东西。我正在使用 DJGPP C 编译器。我可以成功打开可执行文件,但不能打开它们默认程序中的文件。
#include <stdio.h>
int main(void) {
char sys_cmd[100] = "C:\\WINDOWS\\system32\\Calc.exe";
system(sys_cmd);
system("\"C:\\TextFile.txt\"");
system("\"www.bbc.co.uk\"");
getch();
return 0;
}
运行此代码会导致计算器启动。关闭计算器后,它会报告:
Bad command of file name
Bad command of file name
所以其他两个系统调用存在问题。我尝试将“START”添加到系统调用中,但这并不能解决问题。刚刚搜索了我的 Windows 7 Pro 系统,它没有 START.EXE。添加“cmd.exe”只是启动cmd,所以好像没有发送任何参数。
我可以在cmd中正常输入“C:\TextFile.txt”,它会打开notepad.exe,里面有TextFile.txt。
理想情况下,无论如何我都会使用比 system() 更安全的东西来执行此操作,但我还没有在 DJGPP 中看到任何 ShellExecute 示例。
【问题讨论】:
-
'system' 在包含的命令退出之前不会返回。因此,第二次和第三次调用system不在calc.exe的执行范围内。建议,对于系统的第二次调用,使用要编辑的文件的参数执行一个编辑器。与第三次调用系统类似