2010-07-11 9 views
1

Fondamentalement, j'ai passé un script dans le terminal via/bin/bash "[chemin]" ou/bin/sh "[chemin ] ", et j'ai passé des commandes dans un terminal via/bin/bash -c" [commande] "ou/bin/sh -c" [commande] ". Les deux façons fonctionnent correctement. Mais dans mon application Cocoa, quand j'essaie de faire exactement la même chose avec NSTask (en utilisant/bin/bash ou/bin/sh), l'application semble ne jamais répondre. C'est comme si le programme était bloqué à l'intérieur de bash ou sh. J'ai essayé de le faire avec et sans waitUntilExit, et j'ai également essayé d'utiliser terminate. Toujours pas de chance. Quelqu'un d'autre a-t-il eu ce problème ou a-t-il une idée de la raison pour laquelle cela se produit?NSTask envoyant un argument via le problème/bin/sh ou/bin/bash Cocoa Objective-C

Merci!

P.S. Je ne suis pas sur mon ordinateur de travail en ce moment, mais, si nécessaire, je peux fournir le code plus tard.

Répondre

0

Ok. J'ai donc trouvé la solution pour n'importe qui d'autre qui pourrait en avoir besoin. Fondamentalement, il y a un problème est le standardInput. Le problème n'apparaît que dans la console Xcode et n'est pas une erreur/un bug avec votre application. La solution est d'ajouter la ligne suivante (essentiellement définir le standardInput à quelque chose au hasard):

[task setStandardInput: [NSPipe pipe]]; 

Dans la solution ci-dessus, la tâche est le nom de la variable du NSTask utilisé.

Questions connexes