Bonjour, petite question sur ProcessBuilder.
J’exécute un programme avec ProcessBuilder, je lis le flux getInputStream pour connaître le résultat de ma commande ( je souhaite récupérer le PID d'un programme ), cependant la lecture se fait trop tard j'explique :
Sous un shell classique :
Dans java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 jose@jose-desktop:~$ /bin/sh -c thunderbird & echo $! [1] 2437 2437 jose@jose-desktop:~$ Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path*: «*pixmap*» Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path*: «*pixmap*» Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path*: «*pixmap*» Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path*: «*pixmap*»
Le but étant d'obtenir le PID du programme lancé ( ici thunderbird )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path*: «*pixmap*» Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path*: «*pixmap*» Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path*: «*pixmap*» Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path*: «*pixmap*»
Le code java utilisé est :
Savez vous comment je peux corriger cela ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Process process = new ProcessBuilder(cmd).redirectErrorStream(true).start(); try { process.getOutputStream().close(); process.getErrorStream().close(); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream(), encodage)); try { String s; while ((s = reader.readLine()) != null) { //traitement
Partager