我正在尝试运行一个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结束然后从创建的文件中读取!!! 有什么帮助吗?
答案 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”);