waitfor ...

Le
ricky
bonjour, je debute en java et j ai un petit pb avec une fonction waitfor :

sous windows je fais quelquechose du genre :
exec("notepad.exe")
waitfor()
insctruction suivante

je pensait que le wwaitfor allait attendre que je quitte notepad pour
continuer


or le notepad se lance, et en meme temps l instruction suivante est
executee

comment bloquer le java pour qu il attende que le quitte le notepad par
exemple ?

cordialement
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Real Gagnon
Le #228677
ricky @news.orange.fr:

sous windows je fais quelquechose du genre :
exec("notepad.exe")
waitfor()
insctruction suivante

je pensait que le wwaitfor allait attendre que je quitte notepad pour
continuer


Sans voir le vrai ocde, c'est difficile a dire.

Le code suivant se comporte correctement :

public class ExecNotepad {
public static void main(String[] args) throws Exception {
Process p =
Runtime.getRuntime()
.exec("notepad.exe");
p.waitFor();
System.out.println("Done.");
}
}

Bye.
--
Real Gagnon from Quebec, Canada
* Java, Javascript, VBScript and PowerBuilder code snippets
* http://www.rgagnon.com/howto.html
* http://www.rgagnon.com/bigindex.html

1 connu
Le #228675
Bonjour,

j'ai essayé utilise la meme chose mais avec l'application necessaire au lancement du fichier sélectionné par l'utilisateur.
En général, c'est Word mais ca ne marche pas, mon appli graphique continue sa vie sans attendre.
Y a t'il un moyen ?


Merci d'avance


Pierre

Mon bout de code :
Process p = Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + "nomduFichier);
p.waitFor();



"Real Gagnon"
ricky @news.orange.fr:

sous windows je fais quelquechose du genre :
exec("notepad.exe")
waitfor()
insctruction suivante

je pensait que le wwaitfor allait attendre que je quitte notepad pour
continuer


Sans voir le vrai ocde, c'est difficile a dire.

Le code suivant se comporte correctement :

public class ExecNotepad {
public static void main(String[] args) throws Exception {
Process p > Runtime.getRuntime()
.exec("notepad.exe");
p.waitFor();
System.out.println("Done.");
}
}

Bye.
--
Real Gagnon from Quebec, Canada
* Java, Javascript, VBScript and PowerBuilder code snippets
* http://www.rgagnon.com/howto.html
* http://www.rgagnon.com/bigindex.html



ricky
Le #228674
Bonjour,

j'ai essayé utilise la meme chose mais avec l'application necessaire au lancement du fichier sélectionné par l'utilisateur.
En général, c'est Word mais ca ne marche pas, mon appli graphique continue sa vie sans attendre.
Y a t'il un moyen ?


Merci d'avance


Pierre

Mon bout de code :
Process p = Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + "nomduFichier);
p.waitFor();




merci a toi pour la confirmation, c est ce que j avais ecrit ...

en fait, le code marche sur mon xp chez moi, mais n'attend pas sur le
w2000 au buro. Je vais donc creuser de ce cote la...

cordialement

ricky
Le #228673
bonjour

merci a toi pour la confirmation, c est ce que j avais ecrit ...

en fait, le code marche sur mon xp chez moi, mais n'attend pas sur le
w2000 au buro. Je vais donc creuser de ce cote la...

cordialement


en fait je conforme ce qu ecrivait 1 connu...
cela depend de l'application qu'on lance ... par exemple, ce code n
attend pas avbec procexp.exe ou avec certains outils windows et attend
avec d'autres.. au bureau on ne lance pas l'appli de la meme facon et il
n'y a pas attente...

waitfor() ne semble donc pas etre la panacee :)

Black Myst
Le #228672
bonjour

merci a toi pour la confirmation, c est ce que j avais ecrit ...

en fait, le code marche sur mon xp chez moi, mais n'attend pas sur le
w2000 au buro. Je vais donc creuser de ce cote la...

cordialement


en fait je conforme ce qu ecrivait 1 connu...
cela depend de l'application qu'on lance ... par exemple, ce code n
attend pas avbec procexp.exe ou avec certains outils windows et attend
avec d'autres.. au bureau on ne lance pas l'appli de la meme facon et il
n'y a pas attente...

waitfor() ne semble donc pas etre la panacee :)


Rien de surprenant... et complètement indépendant de Java.
Tout dépends de l'application, elle peut, ou non, garder la main.

Depuis un terminal de commande, si tu lance l'application firefox,
celle-ci ce lance et garde la main dans ton terminal. Ce terminal
affichera éventuellement les logs.

Si tu ouvre un second terminal et que tu lance firefox (sans avoir
quitté celui lancé précédemment) firefox garde la main 1 ou 2 secondes
ouvre une nouvelle fenêtre, puis rends la main au terminal.

Dans la pratique, l'application a terminé son exécution, et il n'y a
qu'une seul instance de FF en mémoire avec 2 fenêtres.


Pour ton word, c'est la même chose. Si ca ne marche pas sur ton lieu de
travail, c'est certainement qu'il y a un agent office qui tourne pour
accélérer le démarrage de excel/word. Du coup, ta command java ne fait
qu'un appel à l'agent qui ouvre lui-même une nouvelle fenêtre de word.

Pour firefox, si tu as la variable d'environnement MOZ_NO_REMOTE=1,
le deuxième lancement de FF démarrera une nouvelle instance, donc ne
rendra pas la main au terminal.

++
Black Myst


ricky
Le #228671
bonjour

waitfor() ne semble donc pas etre la panacee :)


Rien de surprenant... et complètement indépendant de Java.


entierement d'accord... mais cela complique mon probleme :)

le pire pour moi c est que cela coince meme pour un code c que j'ai fait...

je cherche a faire un truc du style :

code java
interface graphiqie
sauve dans un fichier

appel du code C (mode console) qui fait le traitement

java attend (ou devrait attendre la fin du calcul)

fin du code c qui sauve ses infos dans un autre fichier

code java continue et lit le nouveau fichier pour l afficher

En clair faire une interface en java qui lance les divers codes ecrits
en C...

Mon probleme etant que le waitfor n'attend pas la fin du code C ouinn :)
y aurait il une solution dans java, sans modifier le code C pour qu'il
pose un fichier verrou ?


cordialement


Real Gagnon
Le #228670
ricky @news.orange.fr:

Mon probleme etant que le waitfor n'attend pas la fin du code C ouinn :)
y aurait il une solution dans java, sans modifier le code C pour qu'il
pose un fichier verrou ?


Essaie :

Process p =
Runtime.getRuntime().exec("cmd /c start /wait /tmp/mycode.exe");
p.waitFor();

Bye.
--
Real Gagnon from Quebec, Canada
* Java, Javascript, VBScript and PowerBuilder code snippets
* http://www.rgagnon.com/howto.html
* http://www.rgagnon.com/bigindex.html

Publicité
Poster une réponse
Anonyme