2009-10-20 5 views
1

Comment invoquer un processus enfant à partir de C# avec UseShellExecute défini sur false et autoriser la suppression de fichier?Impossible de supprimer un fichier dans un processus enfant démarré à partir d'une application C#

Le processus enfant est un programme Java qui crée un fichier 0 octet, le transfère à un serveur distant et le supprime. Cette fonctionnalité fonctionne lorsque j'exécute le programme Java à partir de la ligne de commande Windows.

Si j'appelle le programme Java à partir de C# en utilisant une instance System.Diagnostics.Process avec StartInfo.UseShellExecute définie sur false, le processus enfant ne supprime pas le fichier. En fait, le traitement des stands et rien ne se passe. Si la propriété StartInfo.UseShellExecute de l'objet Process est définie sur true, le processus enfant peut supprimer le fichier et l'exécution du processus parent se poursuit. Cependant, j'ai besoin que la propriété UseShellExecute soit false pour que je puisse rediriger la sortie du processus fils.

+0

J'ai découvert que le processus Java stagne avant d'arriver à la suppression du fichier. Voir mon commentaire à la réponse de Tim ci-dessous pour plus de détails. Dois-je supprimer ce post en fonction des nouvelles informations que j'ai? – ecruz3

+0

Si le problème n'a rien à voir avec la suppression du fichier, la question n'est plus exacte. Vous pouvez simplement le modifier, mais puisque vous allez le changer complètement, il vaudrait probablement mieux le supprimer et en créer un nouveau pour qu'il apparaisse dans la "nouvelle" section. –

Répondre

0

Est-ce que cela pourrait être la cause?

http://hackage.haskell.org/trac/ghc/ticket/2650

(ou, plus précisément, le Java issue linkée)

Je suis tombé sur un problème similaire il y a quelque temps, et il est avéré être causé par l'héritage de la poignée inattendue, mais je ne Je ne vois pas très bien comment cela pourrait causer le problème que vous décrivez.

+0

Après avoir posté ma question, j'ai découvert que le processus Java stagne avant d'arriver à la suppression du fichier! Je ne sais pas comment déboguer le processus enfant, donc j'insère des instructions de journalisation. Le processus Java meurt lorsqu'il effectue un appel synchronisé pour obtenir une référence java.util.Collection . Merci pour votre aide. – ecruz3

+0

Vous ne savez pas exactement ce que vous utilisez pour le développement Java, mais dans NetBeans, vous pouvez utiliser la commande Attacher le débogueur dans le menu Déboguer pour déboguer un processus déjà démarré. –

Questions connexes