Передача аргументов запущенному процессу в C # - PullRequest
5 голосов
/ 20 июля 2011

У меня проблемы с запуском процессов и передачей им аргументов. Я знаю, как запустить процесс с некоторыми аргументами

ProcessStartInfo psi = new ProcessStartInfo("cmd.exe", "/c something");  
Process p = Process.Start(psi)

Проблема в том, что после выполнения скрипта процесс прекращается. Вот почему есть "/ C"

Но я запускаю несколько сценариев и хотел бы запустить их в одном процессе ("cmd.exe"), чтобы не запускать новый процесс каждый раз.

Есть ли какие-то решения для этого?

Надеюсь, кто-нибудь поймет, о чем я говорю;)

Ответы [ 2 ]

10 голосов
/ 20 июля 2011

Я рекомендую вам использовать командный файл для сценария выполнения ваших исполняемых файлов и вместо этого вызывать ваш командный файл.Или вы можете сделать это -

    Process p = new Process();
    ProcessStartInfo info = new ProcessStartInfo();
    info.FileName = "cmd.exe";
    info.RedirectStandardInput = true;
    info.UseShellExecute = false;

    p.StartInfo = info;
    p.Start();

    using (StreamWriter sw = new StreamWriter(p.StandardInput))
    {
        if (sw.BaseStream.CanWrite)
        {
            sw.WriteLine("mysql -u root -p");
            sw.WriteLine("mypassword");
            sw.WriteLine("use mydb;");
        }
    }
0 голосов
/ 20 июля 2011

Похоже, вам следует изучить перенаправление стандартного ввода - обязательно установите psi.UseShellExecute на false. Возможно, вы также захотите перенаправить стандартный вывод, так что вы сможете узнать, что делает ваш дочерний процесс.

Подробнее о перенаправлении здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...