Runtime.getRuntime.exec ("кто я") не дает желаемых результатов - PullRequest
1 голос
/ 05 февраля 2012

Мне нужно найти авторизованного пользователя из кода Java, поэтому я использую следующие опции: Runtime.getRuntime.exec ( "кто") Runtime.getRuntime.exec ("кто я")

Оба дают одинаковый результат (результат, который я получаю, когда я даю команду who в приглашении). Я предполагаю, что это не признает ничего после пробела. Я пробовал это с другими командами, но тот же результат.

Есть ли проблема с кодом или мне нужно установить какое-то окружение, помогите plz.

Ответы [ 2 ]

2 голосов
/ 05 февраля 2012

Если вам просто нужно знать имя текущего пользователя, вошедшего в систему, и никакой другой информации о команде who (например, имя pty и т. Д.), Вы должны использовать

System.getProperty("user.name"); 

Таким образом, вы остаетесь независимым от платформы, независимо от локали (формат вывода who am i может отличаться, если вы не используете локаль C), и это намного надежнее, чем вызов внешней команды.

2 голосов
/ 05 февраля 2012

Первый параметр функции Runtime.exec () принимает только имя программы.

Для передачи аргументов вам необходимо использовать другую версию, например Runtime.exec (String [] cmdarray). Пример:

Runtime.getRuntime().exec(new String[] {"who", "am", "i"} );

Или, проще:

Runtime.getRuntime().exec("who am i".split());

Который использует метод String.split () для разделения на пробелы.

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