Ho un programma java che esegue un altro programma (Python) come processo.Terminare l'esecuzione del processo con `exec` quando termina il programma
Process p = Runtime.getRuntime().exec("program.py", envp);
Se il programma java termina l'elaborazione, anche il processo Python è terminato. Il comando finish
invia un segnale al processo Python per chiuderlo.
Nella situazione normale processo è chiusa in questo modo:
BufferedWriter output = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
output.write("@EOF\n");
output.flush();
Tuttavia, quando il programma si blocca Java, il processo non è chiuso. Il comando di chiusura non viene inviato a causa dello schianto. È possibile terminare automaticamente il processo ogni volta che si termina il programma?
In realtà sono davvero interessato anche alla risposta a questa domanda. Anche se non posso offrirlo, ti dispiace condividere perché il tuo programma Java si sta bloccando? – Vinay
Affinché questa domanda sia rispondente, è necessario fornire ulteriori informazioni. Ad esempio: sei libero di modificare i sorgenti di uno o di entrambi i programmi Java e Python? –
Dovrei essere in disaccordo su Vinay (haha stesso nome). In questo momento lo sto cercando, ma penso che qualcosa sulla falsariga di eseguire quel processo python solo mentre è in esecuzione l'attuale ID di processo Java farebbe il trucco. Non sono sicuro di essere sulla strada giusta, ma questa domanda mi incuriosisce davvero. – Vinay