我想在我的C ++程序中使用exe文件(convert.exe)。这个“exe”文件将我的输出文件格式更改为另一种格式。什么时候,我从我的命令提示符(cmd)使用这个convert.exe,我必须这样输入;
转换-in myfile -out convertedfile -n -e -h
其中;
myfile =文件名,我从我的c ++程序中获取 convertedfile =“convert.exe”文件的结果 -n,-e,-h =是我需要用来获取输出文件的一些参数(列) 所需的数据列。
我尝试使用system(convert.exe)。但是,它不起作用,因为我不知道如何使用所有这些参数。
答案 0 :(得分:14)
std::system
函数需要const char *
,所以你试试
system("convert -in myfile -out convertedfile -n -e -h")
然后,如果你想要更灵活,你可以使用std::sprintf
创建一个包含正确元素的字符串,然后将其传递给system()函数,如下所示:
// create a string, i.e. an array of 50 char
char command[50];
// this will 'fill' the string command with the right stuff,
// assuming myFile and convertedFile are strings themselves
sprintf (command, "convert -in %s -out %s -n -e -h", myFile, convertedFile);
// system call
system(command);
答案 1 :(得分:4)
ShellExecute(NULL, "open", "<fully_qualified_path_to_executable>\convert.exe",
"-in myfile -out convertedfile -n -e -h",
NULL, SW_SHOWNORMAL);
答案 2 :(得分:2)
您可以使用Win32 API CreateProcess。
答案 3 :(得分:1)
使用以下其中一项:
int execl(char * pathname, char * arg0, arg1, ..., argn, NULL);
int execle(char * pathname, char * arg0, arg1,..., argn, NULL, char ** envp);
int execlp(char * pathname, char * arg0, arg1,..., argn, NULL);
int execlpe(char * pathname, char * arg0, arg1,..., argn, NULL, char ** envp);int execv(char * pathname, char * argv[]);
int execve(char * pathname, char * argv[], char ** envp);
int execvp(char * pathname, char * argv[]);
int execvpe(char * pathname, char * argv[],char ** envp);
exec() family of functions creates a new process image from a regular, executable file...
答案 4 :(得分:1)
系统(命令);来自stdlib.h
既然你不希望并行执行,那么对使用system()的高管连续三次调用是否适用于你?