Newsgroup: it.comp.java
Titolo: PID di un processo & varie

Ciao a tutti!
Avrei un po' di dubbi e spero che ci sia qualcuno che mi possa aiutare.
Volevo sapere:
1 - come è possibile data un'applicazione Java conoscere il PID associato al
processo.
2 - se è possibile (e come) fare in modo che un certo blocco di codice venga
eseguito cmq, anche nel caso in cui il programma termini perchè si è
verificata un'eccezione.
GRAZIE molte
Elena

 verificata un'eccezione.
try
{
}
catch
{
}
finally
{
    Viene cmq eseguito
}

 verificata un'eccezione.
questo invece sì ..
basta che identifichi il blocco che devi eseguire comunque anche al
verificarsi una eccezione nella clausula finally (ricorda che cmq il try ci
và!!!)
Es:
try
{
  <mio blocco di istruzioni che generano una eccezione>
}
catch( Throwable  e )
{
 <blocco per gestire qualsiasi tipo di istruzioni pure quelle "balosse" che
poi arrivano alla jvm... anche quelle non intercettate da Exception>
}
finally
{
 <blocco che deve essere cmq eseguito sia in caso venga eseguita oppure no
una eccezione>
}
Spero di averti dato almeno un barlume di suggerimento ...e di non aver
cannato troppo :))))
Ciao
Dani
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If at first the idea is not absurd then there is no hope for it. - Albert
Einstein
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

MERCI
;-)
Elena

 si è verificata un'eccezione.
Da JDK1.3 puoi aggiungere exit hooks alla JVM - che dovrebbero fare al
caso tuo. 
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun


Grazie per le delucidazioni... ho ancora però un piccolo problemino...
Ho guardato sul manuale di Java che ho (forse come libro non vale un gran
che... ) il funzionamento del finally, solo che non mi è molto chiaro come
mi devo comportare se all'interno di esso pongo del codice che può lanciare
a sua volta delle eccezioni, le devo catturare oppure me ne posso anche
"fregare"?
Grazie :-)
Elena

 processo.
In Unix puoi passarlo dalla shell a java settando una system property,
esempio:
java -Dsystem.pid=$$ MainClass
HTH
Ciao, Cris
-- 
Cristian Veronesi ><((((º> 
http://www.crpa.it
There are no good wars, with the following exceptions: The American 
Revolution, World War II, and the Star Wars Trilogy. (Bart Simpson)

 "fregare"?
No no Elena ... non devi fregartene .. all'interno del tuo bel codice della
finally se ci sono delle istruzioni che possono generare altre eccezioni
devi inserire altri blocchi try, catch interni ...ricordati tra l'altro che
il blocco finally NON blocca di per se il propagarsi dell'eccezione ..
quindi se non vi è una istruzione catch l'eccezione verrà risollevata al
blocco esterno ... spero che tu mi abbia capito ...
Ciao ciao


java -Dsystem.pid=$$ MainClass
?
Scusa ma non ho capito molto bene come fare, sono un po' alle prime armi e
forse mi mancano un po' di basi... Avrei bisogno di un piccolo esempietto...
Cosa devo scrivere all'interno del mio codice Java per sapere il PID
corrispondente all'applicazione?
:-(
Grazie
Elena

Ho compilato il codice che ho scritto e sembra non dare problemi, anche in
esecuzione sembra funzionare come desiderato... il try l'ho messo al di
fuori del metodo finally.
In breve, io genero un file solo sotto certe condizioni ed avevo bisogno di
cancellarlo al termine dell'esecuzione, qualunque cosa capiti, mi spiego:
try
{
    if (condizione)
    {
        scrivo file
        try
        {
            ....
        }catch
        {
            ....
         }
        finally{
            cancello il file
        }
    }
}
catch
{
}
Almeno logicamente ti sembra funzionare, oppure è solo un caso che non mi
abbia dato errori?
Grazie
Elena

 abbia dato errori?
Bè ... purtroppo credo di sì Elena .... l'istruzzione di copia del file
dovrebbe essere dentro il secondo blocco try ... altrimenti se viene solleva
una eccezione in quel punto verrà eseguito il blocco all'interno della catch
più esterna ...e non venendo eseguita la finally il file non verrà
cancellato
Dovrebbe essere invece:
     if (condizione)
     {
        try
         {
             <scrivo file>
         }
         catch( Exception e )
         {
             ....
          }
         finally
        {
            <cancello il file>
         }
     }
Cosa dovrebbe essere tutto apposto!


 ha scritto nel messaggio
news:pLV28.21484$ly.6...@twister1.libero.it...


 corrispondente all'applicazione?
Le system property sono un elenco proprietà di sistema definite
all'interno di una JVM. Per leggerle tutte fai girare questa classe:
public class DisplayProperties {
  public static void main (String args[]) {
    System.getProperties().list(System.out) ;
  }
}
Per esempio a me salta fuori:
$ java DisplayProperties
-- listing properties --
user.language=en
java.home=/usr/java/bin/..
java.vendor.url.bug=
http://java.sun.com/cgi-bin/bugreport.
..
file.encoding.pkg=
sun.io
java.version=1.1.7B
file.separator=/
line.separator=
file.encoding=8859_1
java.compiler=
java.vendor=SCO
user.timezone=CET
user.name
=cris
os.arch=IA32
os.name
=OpenServer
java.vendor.url=
http://www.sco.com/
user.dir=/u/homes/cris/work
java.class.path=.:/usr/java/bin/../classes:/usr/java/...
java.class.version=45.3
os.version=5.0.4
path.separator=:
user.home=/u/homes/cris
L'opzione -D dell'interprete java/jre ti permette di modificare una di
queste proprietà oppure di definirne una tu usando un nome di fantasia.
Ad esempio se io faccio:
$ java -Dstagione=inverno DisplayProperties
mi salta fuori:
-- listing properties --
user.language=en
java.home=/usr/java/bin/..
java.vendor.url.bug=
http://java.sun.com/cgi-bin/bugreport.
..
file.encoding.pkg=
sun.io
java.version=1.1.7B
file.separator=/
line.separator=
file.encoding=8859_1
java.compiler=
java.vendor=SCO
user.timezone=CET
stagione=inverno
user.name
=cris
os.arch=IA32
os.name
=OpenServer
java.vendor.url=
http://www.sco.com/
user.dir=/u/homes/cris/work
java.class.path=.:/usr/java/bin/../classes:/usr/java/...
java.class.version=45.3
os.version=5.0.4
path.separator=:
user.home=/u/homes/cris
Questo sistema è interessante perchè permette di passare alla JVM delle
variabili di ambiente del sistema.
Ad esempio, in Unix/Linux, il PID è accessibile alla shell mediante il
simbolo "$$":
$ echo $$
15950
Quindi, se fai una roba del tipo:
$ java -Delena.pid=$$ DisplayProperties
Potrai leggere il PID all'interno della tua applicazione con una
semplice chiamata di questo tipo:
String pid = System.getProperty("elena.pid") ;
Purtroppo questo trucchetto funziona soltanto su Unix/Linux quindi non
so fino a che punto ti possa essere utile...


 della shell che ti lancia e non quello della vm java
Ma che idiota che sono, non ci avevo pensato! Chiedo scusa e torno
umilmente a lurkare...


 ha scritto nel messaggio
news:3C4C36A7...@crpa.it...
