如何从CreateProcess生成的文件中读取?

时间:2013-07-02 00:53:57

标签: file createprocess

我正在尝试运行一个matlab文件,该文件在另一个文件中打印一个值,然后在我的c ++应用程序中读取该值。我的代码是:

int disponibilitate;
STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );

LPTSTR szCmdline = _wcsdup(TEXT("\"D:\\Program Files\\Matlab\\bin\\matlab.exe\" -nodisplay -nosplash -nodesktop -r \"run('C:\\Users\\Lucian\\Desktop\\licenta visual studio\\licenta\\licenta\\simulare.m');exit;\""));

if( !CreateProcess(NULL, szCmdline, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))

{
    printf( "CreateProcess failed (%d).\n", GetLastError() );
    return;
}
    fin.open("simulare_matlab_out.txt");
    fin>>disponibilitate;
    cout<<disponibilitate;
fin.close();
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );

simulare_matlab_out.txt是我的matlab应用程序的输出文件。 运行c ++项目后,它会打印一个随机值,但在simulare_matlab_out.txt文件中,该值是正常的。

!!!我认为我的问题是程序不会等待Created Process结束然后从创建的文件中读取!!! 有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

使用STDOUT。

http://www.cplusplus.com/reference/cstdio/stdout/

FILE * stream;    if((stream = freopen(“file.txt”,“w”,stdout))== NULL)       出口(-1);

printf(“这是标准输出\ n”);

stream = freopen(“CON”,“w”,stdout);

printf(“现在再次回到控制台\ n”);