Вопрос

В моем веб -приложении я делаю ниже. Я знаю, что это правильно, потому что я попробовал 1) сбросить start_sz в текстовый файл 2) su www-data 3) Копировать/вставить строку извлечения, и она работала.

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

Я получаю исключение ниже, так что с рассуждением выше, я считаю, что это говорит о том, что его говорится.

Не могу найти указанный файл

at System.diagnostics.process.start_Shell (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process Процесс) [0x00000] В: 0

at System.diagnostics.process.start_common (System.diagnostics.processStartInfo startInfo, system.diagnostics.process Процесс) [0x00000] В: 0

at system.diagnostics.process.start (system.diagnostics.processstartinfo startinfo) [0x00000] в: 0

at system.diagnostics.process.start (System.String Filename) [0x00000] в: 0

на mysite.queuemanager.makelink (System.string fn) [0x00000] в: 0

на mysite.queuemanager.imagequeue2 () [0x00000] в: 0

на mysite.queuemanager.imagequeue () [0x00000] в: 0

Итак, как мне это исправить? В основном мне нужно создать жесткую ссылку (мягкая тоже в порядке) во время выполнения в моем приложении ASP.NET.

Я подумал, может быть, мне понадобится полный путь /bin/bash -c Однако это тоже не сработало.

Это было полезно?

Решение

Почему бы не позвонить ln напрямую? Без bash?

Process.Start("ln", params);

Также вам может потребоваться указать полный путь:

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

Фактически, Process.Start("bash") работает для меня, так что проверьте $PATH переменная среды и т. д.

Другие советы

Нет, вы знаете, что это правильно при использовании от оболочки. Анкет Эта оболочка примет во внимание путь, в отличие от Process.Start.

Просто укажите полный путь к Bash, который почти наверняка /bin/bash.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top