C语言中CreatProcess函数参数问题!急!!!!
我想用CreatProcess函数调用C盘目录下的test.exe程序,同时需要将test.exe的标准输入输出重定向到文件输入输出(输入重定向到in.txt,输出重定向到b.txt)。
请问CreatProcess的前两个参数如何确定?第一个参数似乎是“C://test.exe”,第二个命令行参数应该怎么写?
答了在加50分!!!!
参考答案:补充:
自己修改输出文件,要启动的控制台应用程序,每次检查是否有输出的时间间隔.最好改成带命令行参数的程序.
楼主,貌似用CreateProcess不行,看看我下面的代码
vc++6.0下编译运行测试通过
补充:"带命令行参数的程序"? 对本问题不起作用
输入问题很简单,再建立一个管道,把被创建进程的输入句柄替换为这个管道的输出句柄,具体程序我改天给出来
#include "windows.h"
#include <stdio.h>
#define MAX_LENGTH 10240
int main()
{
FILE *f;
PROCESS_INFORMATION ProcessInformation;
SECURITY_ATTRIBUTES pipeattr;
HANDLE hReadPipe, hWritePipe;
STARTUPINFO si;
unsigned long lBytesRead;
char Buff[MAX_LENGTH];
int ret;
f = fopen("c:\\result.txt", "w");/*打开输出文件*/
if (!f)
{
printf("create file error!\n");
return 1;
}
pipeattr.nLength = 12;
pipeattr.lpSecurityDescriptor = 0;
pipeattr.bInheritHandle = true;
CreatePipe(&hReadPipe, &hWritePipe, &pipeattr, 0);/*创建管道*/
ZeroMemory(&si, sizeof(si));
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
si.wShowWindow = SW_HIDE;
si.hStdInput = NULL;
si.hStdOutput = si.hStdError = hWritePipe;/*把进程的输出信息接到管道上*/
if (CreateProcess("c:\\ansic.exe", NULL, NULL, NULL, 1, 0, NULL, NULL, &si, &ProcessInformation))
{/*创建进程*/
printf("create process successfully!\n");
}
else
{
printf("create process error!\n");
return 1;
}
Sleep(1000);/*先等待1秒,源程序在1秒内运行结束的话将没有输出,
所以最好在程序最后加一个system("pause")*/
while (Sleep(10), PeekNamedPipe(hReadPipe, Buff, MAX_LENGTH, &lBytesRead, 0, 0), lBytesRead)
/*每0.01秒检查是否有输出,如果有输出则写到文件,否则停止循环*/
if (lBytesRead)
{
ret = ReadFile(hReadPipe, Buff, lBytesRead, &lBytesRead, 0);
fwrite(Buff, lBytesRead, 1, f);
}
fclose(f);
return 1;
}