При использовании Process.Start(), как я могу оставить приглашение cmd открытым на время выполнения программы?

Прямо сейчас я пытаюсь использовать С#, чтобы открыть сервер .java или файл .bat, который запустил тот же сервер. Я могу запустить его нормально, однако, если он быстро закрывается, так как выполняется единственная команда, которую я хотел выполнить. Проблема в том, что мне нужно держать окно cmd открытым, чтобы поддерживать работу сервера.

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

Process seleniumServer;
ProcessStartInfo seleniumServerProcessStartInfo = new ProcessStartInfo("java", @"C:\Users\full\path\to\file\selenium-server.jar");
Process.Start(seleniumServerProcessStartInfo);

Как я могу убедиться, что всплывающее окно cmd, которое запускает файл selenium-server.jar, остается открытым до закрытия программы?


person James    schedule 24.02.2011    source источник


Ответы (4)


Запустите его с "-jar foo.jar" в качестве аргументов, например:

ProcessStartInfo seleniumServerProcessStartInfo = new ProcessStartInfo("java", @"-jar C:\Users\full\path\to\file\selenium-server.jar");

Окно, вероятно, исчезает, потому что банка никогда не запускается.

person radical    schedule 24.02.2011

Вместо этого вы можете запустить cmd /C your-command, который держит командную строку открытой.

person Dan Abramov    schedule 24.02.2011
comment
Почти уверен, что вы имели в виду /K, так как /C противоположно (k для сохранения, c для закрытия). - person Generic Comrade; 08.06.2013
comment
несколько сообщений stackoverflow, и это первое, объясняющее разницу между /C и /K, спасибо, товарищ! - person TombMedia; 05.06.2015

Используйте Process.WaitForExit.

person Forgotten Semicolon    schedule 24.02.2011
comment
Я не знал, что это существует, +1 - person James; 25.02.2011

Возможно, процесс java останавливается с ошибкой (он может быть придирчив к переменным среды)

    Process selenium = Process.Start(seleniumServerProcessStartInfo); 

    selenium.WaitForExit();

    int exit = selenium.ExitCode;

    if (exit!=0)
       throw new Exception("java selenium server stopped with error");
person rene    schedule 24.02.2011