Question

Dans mon webapp je fais le ci-dessous. Je sais que correct parce que j'ai essayé 1) le dumping start_sz à un fichier texte 2) su www-data 3) copier / coller la chaîne d'extrait et il a travaillé.

var start_sz = string.Format(@"bash -c 'ln ""{2}/{0}"" ""{2}/{1}""'", fn, newfn, System.IO.Directory.GetCurrentDirectory());
Process.Start(start_sz);

Je reçois l'exception ci-dessous donc avec le raisonnement ci-dessus, je crois que son bash dire ne peut pas être trouvé.

  

Vous ne trouvez pas le fichier spécifié

     

à System.Diagnostics.Process.Start_shell (System.Diagnostics.ProcessStartInfo startInfo, processus System.Diagnostics.Process) [0x00000] en: 0

     

à System.Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInfo startInfo, processus System.Diagnostics.Process) [0x00000] en: 0

     

à System.Diagnostics.Process.Start (System.Diagnostics.ProcessStartInfo startInfo) [0x00000] en: 0

     

à System.Diagnostics.Process.Start (System.String filename) [0x00000] en: 0

     

à MySite.QueueManager.MakeLink (System.String fn) [0x00000] en: 0

     

à MySite.QueueManager.ImageQueue2 () [0x00000] en: 0

     

à MySite.QueueManager.ImageQueue () [0x00000] en: 0

Alors, comment puis-je résoudre ce problème? Fondamentalement, je dois créer un hardlink (est ok aussi doux) au moment de l'exécution dans mon application asp.net.

Je pensais que je dois peut-être le chemin bash complet, j'ai essayé /bin/bash -c mais qui ne fonctionne pas non plus.

Était-ce utile?

La solution

Pourquoi ne pas appeler directement ln? Sans bash?

Process.Start("ln", params);

vous devrez peut-être spécifier le chemin complet:

Process.Start("/bin/ln", params);

En fait, Process.Start("bash") travaille pour moi, ainsi vérifier la variable d'environnement $PATH, etc.

Autres conseils

Non, vous savez qu'il est correct quand il est utilisé à partir d'un shell . Cette coquille prendra le chemin en compte, contrairement à Process.Start.

Il suffit de spécifier le chemin complet bash, qui est presque certainement /bin/bash.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top