Windows下的c++写的主进程调用Rscripte.exe子进程[进程结束的问题]

来源:互联网 发布:我的世界开挂js 编辑:程序博客网 时间:2024/05/20 16:36

调用R语言的Rscript.exe  进行时间序列算法的arima调用


1.对于arima算法,首先需要判断时间序列的平稳性  调用library(urca);  --需要CreateProcess 一次

2.然后判断AR MA的阶数,考虑是采用两个for循环放到R中,ar in armin to armax  计算各种组合的AIC值,取AIC最小的模型拟合最好  --需要CreateProcess 一次

3. 计算ARIMA模型 预测数值,季节等参数参考R  --需要CreateProcess一次


三次CreateProcess 每次结果需要依赖前一次进程的结果输出的txt文件



但是单步调试可以运行,直接运行就不可以,CreateProcess运行时的同步问题。


解决方案是参考《Windows核心编程第五版》  105或109页(看的扫描版,不知道为什么一页上有两个页码)的处理方法。


PROCESS_iNFORMATION  PI;

DWORD DWEXITCODE;

BOOL fSuccess = CreateProcess(......,&PI);

if(fSuccess)

{

CloseHandle(PI.hThread);

WaitForSingleObject(PI.hProcess,INFINITE);

GetExitCodeProcess(PI.hProcess,&DWECXITCODE);

CloseHandle(PI.hProcess);

}