Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Come recuperare il PID di un processo

    Salve a tutti,
    volevo sapere come posso fare per recuperare il PID di un processo esterno (creato cioè con: Process proc = Runtime.getRuntime().exec(comando)).
    Comunque mi basterebbe sapere in generale come e se è possibilile recuperare il PID di un processo.

    Grazie a tutti!!!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Come recuperare il PID di un processo

    Originariamente inviato da IngegnerCane
    volevo sapere come posso fare per recuperare il PID di un processo esterno (creato cioè con: Process proc = Runtime.getRuntime().exec(comando)).
    Con Process non puoi.

    Originariamente inviato da IngegnerCane
    Comunque mi basterebbe sapere in generale come e se è possibilile recuperare il PID di un processo.
    Dipende cosa "sai" del processo. In Java "puro" non hai queste informazioni. O usi JNI o invochi eseguibili/tools esterni.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Il problema è che devo eseguire dei processi esterni molto lunghi e mi serve tenere traccia di loro.
    Devo poterli eseguire, verificare se sono ancora in esecuizione e terminare.

    Come mi consigli di fare?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da IngegnerCane
    verificare se sono ancora in esecuizione
    Vedi exitValue() (se il processo è ancora attivo lancia IllegalThreadStateException)

    Originariamente inviato da IngegnerCane
    terminare.
    Vedi destroy() (è "brutale" comunque)

    Ma di più non si può fare in Java "puro".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Ma come posso memorizzare un puntatore ad un processo per poi recuperarlo successivamente?
    Ti spiego:
    dovrei fare una piattaforma che permette all'utente di far partire alcuni processi esterni (o di terminarli) ed avevo pensato di farla con J2EE.
    Però non so come fare per memorizzare i processi attivati dall'utente in modo tale che una volta che l'utente si disconnette e poi si riconnette possa recuperare quali processi ha attivto e magari decidere di terminarli forzatamente.

    Grazie mille dell'aiuto!

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da IngegnerCane
    Ma come posso memorizzare un puntatore ad un processo per poi recuperarlo successivamente?
    L'unica cosa che hai è il reference all'oggetto Process.

    Originariamente inviato da IngegnerCane
    dovrei fare una piattaforma che permette all'utente di far partire alcuni processi esterni (o di terminarli) ed avevo pensato di farla con J2EE.
    Quindi farai una web application. Fintanto che l'application server è in esecuzione e l'oggetto Process lo metti da qualche parte in modo che possa "sopravvivere" tutto il tempo, non vedo problemi.

    Originariamente inviato da IngegnerCane
    Però non so come fare per memorizzare i processi attivati dall'utente in modo tale che una volta che l'utente si disconnette e poi si riconnette possa recuperare quali processi ha attivto e magari decidere di terminarli forzatamente.
    Nel contesto "application" (o "context" ... chiamalo come vuoi, quindi gli oggetti "vivono" per tutta la durata della web application) potresti mettere una 'map' che associa un utente ad una lista di Process.

    Sarà indubbiamente "pesante" .... ma dopotutto se hai 10 utenti che avviano 3 processi ognuno ... hai 30 processi. E dipende da cosa fanno i processi ... ma non è comunque pesante??
    Quello che voglio dire: la esecuzione di processi sul server è una risorsa "preziosa", quindi non credo che sarebbe utile avere centinaia di utenti che si mettono ad avviare processi!!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Il problema è che non voglio far partire i processi da una servlet ma da un Session o da un Entity o da un TimerSession Bean.
    Quindi da qui nn credo di poter accedere al contesto "application" giusto??

    Ti spiego:
    un utente fa partire un MacroProcesso costituito da 5 processi.
    Quindi quando fa partire il MacroProcesso parte il primo processo e gli altri 4 non partono fintanto che il 1° processo non è terminato.

    Considera che ognuno di questi processi è lungo.

    L'utente allora può decidere di scollegarsi dalla piattaforma e intanto questi processi devono andare avanti in modo seriale (finito il 1° dovra partire il secondo e così via).

    Quando l'utente si ricollega deve avere la possibilità di vedere a che punto è il MacoProcesso.
    E se vuole deve poterlo interrompere (interrompendo quindi il processo in esecuzione ed impedendo che i restanti processi partano).

    In attesa di notizie grazie molte dell'aiuto!!

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da IngegnerCane
    Il problema è che non voglio far partire i processi da una servlet ma da un Session o da un Entity o da un TimerSession Bean.
    Parli di EJB, giusto?? Non li conosco, purtroppo.

    Originariamente inviato da IngegnerCane
    Quindi da qui nn credo di poter accedere al contesto "application" giusto??
    Non ti so dire, bisognerebbe approfondire.

    Dovessi farlo io (non conoscendo appunto gli EJB) lo farei con alla base sicuramente una servlet. E l'oggetto java.lang.Process lo incapsulerei e "nasconderei" dentro un altro mio oggetto, giusto per poter aggiungere altri dati ... che so, il comando completo (che non hai più in Process), la data/ora di avvio e cose del genere ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Ma come faresti per farli partire in automatico uno in fila all'atro??

    Atrimenti mi hai parlato di JNI ma come potrei usarlo??

    Grazie mille.

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da IngegnerCane
    Ma come faresti per farli partire in automatico uno in fila all'atro??
    La exec() di Runtime ritorna praticamente subito ... non attende la terminazione del processo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.