Você já tentou usar !program.exe input.mdu
? Isso deve retornar o controle para o Matlab após o programa.exe ser executado. Veja a seção sobre o ponto de exclamação em help punct
EDIT: Isto não ajudará se o programa não for encerrado.
Eu tenho um problema com a execução de um programa no matlab, seja pelo uso de um arquivo em lote ou apenas pela função dos (). Agora posso abrir um programa e executá-lo com a entrada usando:
start program.exe input.mdu
Mas quando a computação está concluída, ela não se fecha sozinha. Eu tentei taskkill, taskkill em combinação com / esperar, fechar, sair, terminar, feito etc. Eu não tenho nenhuma experiência com isso em tudo e não consigo encontrar qualquer informação sobre este problema. Quando eu tentei comandos diferentes, eu não consegui fazê-lo fechar ou ele fechou antes do cálculo terminar.
Eu posso fazê-lo funcionar em cmd usando o taskkill. Em seguida, ele aguarda até que o programa seja concluído, mas quando eu o coloco em um arquivo de lote ou na função dos no Matlab, os problemas começam a ocorrer.
Se você iniciar o programa sem o comando start
(que cria uma nova janela), assim:
program.exe input.mdu
você pode terminá-lo pressionando CTRL+BREAK
.
Se você tiver que usar start
para executar o programa - você deve pressionar essa combinação de teclas quando a janela do seu programa estiver em foco.
No MSDN ( link ):
The CTRL+C and CTRL+BREAK key combinations receive special handling by console processes. By default, when a console window has the keyboard focus, CTRL+C or CTRL+BREAK is treated as a signal (SIGINT or SIGBREAK) and not as keyboard input. By default, these signals are passed to all console processes that are attached to the console. (...) CTRL+BREAK is always treated as a signal, but an application can change the default CTRL+C behavior (...)
Matar um processo é bastante fácil com um arquivo em lote, mas como o DOS (ou mais provavelmente, a sessão de comando do Windows, que é não DOS) sabe quando o MATLAB terminou sua computação? Você poderia ter o MATLAB escrevendo um arquivo quando ele é feito e usar isso como um sinal. Mas eu acho que você está fazendo tudo errado.
O MATLAB sabe quando terminou, sim? E você deve ter algum tipo de script do MATLAB que execute seu cálculo. E o MATLAB tem um comando EXIT .
Portanto, basta incorporar o comando EXIT no seu script do MATLAB.
Ok, obrigado por dedicar tempo ao meu problema, mas agora acho que não há realmente uma solução. Eu enviei um email para os produtores de programas para incluir algo que os fecharia automaticamente após a simulação. E eles estão fazendo isso por mim agora. Então, obrigado mesmo assim!
Tags command-line batch matlab