![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Demetrio |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 1.5.2007 Репутация: нет Всего: нет |
Новичок в java
далее Как правильно обеспечить удерживание процесса(или сессии)? На данный момент делаю так, но ... 1. Второй раз вызов метода get_info ничего не вовзращает..... где накосячил? 2. Как мне очистить OutPutStream , так как мой mytelnet при старте выдает служебную информацию.... p.s. Конечно mytelnet не telnet никакой... просто консольная клиентская утилитка. Можно в ней затык.
Это сообщение отредактировал(а) tux - 1.5.2007, 10:04 |
|||
|
||||
| LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Зачем ты закрываешь поток (buffOut.close();)? Не ты его открывал, не тебе его и закрывать.
Просто прочитать ее из process InputStream. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
| Demetrio |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 1.5.2007 Репутация: нет Всего: нет |
Без закрытия close ничего не выводит вовсе.... может еще как надо подкрректировать...
НЕмного модернизировал под ProcessBuilder, но сути это не меняет... Если у кого есть пример, как посылать команды открытому процессу по мере необходимости, не вызывая ProcessBuilder каждый раз, то с радостью воспользуюсь.... Еще раз повторюсь первый вызов метода get_info проходит на ура
Это сообщение отредактировал(а) powerOn - 1.5.2007, 16:48 |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Модератор: Используйте кнопку КОД для оформления исходников!
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Используй вместо close() - flush(). -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Demetrio |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 1.5.2007 Репутация: нет Всего: нет |
нет, данный вариант тоже не проходит
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Akeem |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 14.7.2006 Где: Киев/Украина Репутация: нет Всего: 3 |
Вопрос по классу CmdTest.
Как можно переписать этот класс так чтобы результаты выводились не на консоль, а в в стринг. Или плиз покажите строчку где выводятся результаты работы команды. Сорри. Смотрю я на класс и не вижу где эти результаты выводятся. :-[ -------------------- Мир огромен и мы только муравьи в нём! (С) formicha |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 4 Всего: 317 |
Spooler перегоняет данные из input- в output-stream, тредом висит, блокируется по in.read(). Пока есть данные в потоке тред разблокирован, зачитывает их в переданный output-stream (81-82). Рядом с out.write поставь StringBuilder.append(buffer, 0, read). Если необходимо, то по in.available() > 0 можно определить заблокируемся ли на следующей итерации.
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Akeem |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 14.7.2006 Где: Киев/Украина Репутация: нет Всего: 3 |
прописал строку StringBuilder.append(buffer, 0, read) перед out.write. И еклипс начал ругатся на buffer
Пишет что нужно чтобы он был CharSequence А если использовать замисть переганяния StringBufferInputStream он вроде сражу должен возвращать нужный стринг. Добавлено через 10 минут и 30 секунд Решил проблему.
Теперь у меня возник вопрос такой. Возможен ли вывод каждого выполнения команды отдельно. Например выполнил одну команду вывел её результат. И как это сделать? П.С. Последовательный вывод возможен для одной консоли. -------------------- Мир огромен и мы только муравьи в нём! (С) formicha |
|||
|
||||
| LSD |
|
||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Вместо:
пиши:
а когда хочешь получить строку:
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||||
|
|||||||
| Akeem |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 14.7.2006 Где: Киев/Украина Репутация: нет Всего: 3 |
Куда мне это добавить? В функцию exec? П.С. Я добавил ее в эту функцию. но мне после выполнения команды например: test.exec("C:"); test.exec("CD"); выдает [] -------------------- Мир огромен и мы только муравьи в нём! (С) formicha |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Туда где тебе надо получить результат выполнения команды. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Akeem |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 14.7.2006 Где: Киев/Украина Репутация: нет Всего: 3 |
Вот написал метод для вывода результатов
Результат выполнения команд
Остается плачевным -- те выводит пустую консоль. Замисть того чтобы вывести C:\ Добавлено через 2 минуты и 11 секунд П.С. Сорри за тупые вопросы. Чет туплю седня. -------------------- Мир огромен и мы только муравьи в нём! (С) formicha |
||||
|
|||||
| Akeem |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 14.7.2006 Где: Киев/Украина Репутация: нет Всего: 3 |
Вот как нужно выводить результат каждой команды:
Функция для перехвата вывода:
(генетически модифицированая функция написаная ЛСД (спасибо ему за это огромное) Функция вывода:
Вызов:
Единственный минус не понятно каким Р оно работает. Те при дебаге все работает как нужно, но при обычном выполнении ничего не выводится. -------------------- Мир огромен и мы только муравьи в нём! (С) formicha |
||||||
|
|||||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Проблема состоит в том, что CmdTest.exec() не ждет пока будет выполнена команда. Команда просто передаётся cmd.exe и все. Сколько она будет выполняться - неизвестно. С выводом в System.out таких проблем нет, потому что по мере выполнения команды данные перекачиваются в System.out, а тут ты сам должен определить когда команда выполнилась, или просто подождать.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Akeem |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 14.7.2006 Где: Киев/Украина Репутация: нет Всего: 3 |
LSD, спасибо!
Все работает. Премного благодарен. Только вопрос: обезательно указывать кодировку? спрашиваю потому що если указать явно то выдает ошибку что неопознает кодировки. (мне не нужны лишние параметры) П.С. Код переписал под свою программу. -------------------- Мир огромен и мы только муравьи в нём! (С) formicha |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
У меня без указания кодировки не все работает корректно, вместо русских буквы кракозябры. Можешь переписать так:
тогда никаких Exception-ов выкидываться не будет. Добавлено через 37 секунд К тому же часть команд выводит данные в 866 кодировке, часть в 1251. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Akeem |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 14.7.2006 Где: Киев/Украина Репутация: нет Всего: 3 |
Ну в принципе у меня проблем с кодировкой не должно быть. Все результаты и команды на англ.
П.С. Я вообще убрал объявление кодировки с функции.
-------------------- Мир огромен и мы только муравьи в нём! (С) formicha |
|||
|
||||
| Resilient |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.11.2008 Репутация: нет Всего: нет |
Приветствую... вобщем-то тоже чайник в Яве, надеюсь, что только пока что
А нету ли способа гарантированно дождаться выполнения команды? и узнать, что вернула та програмка. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
А нафига? Если тебе нужно выполнить некую программу, то вызывай непосредственно её, а не через cmd.exe и таких проблем не будет. А если тебе нужно выполнить команду именно cmd.exe, то в любом случае ты будешь парсить вывод этой команды и по нему уже можно будет определить, что команда завершена. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Resilient |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.11.2008 Репутация: нет Всего: нет |
В данном случае неизвестно других методов вызова, кроме как из командной строки :(
Нужно же дождаться окончания выполнения и в зависимости от кода возврата в cmd продолжить. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Вызова чего? Ты программу пытаешься вызвать или внутреннюю команду cmd.exe? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Resilient |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.11.2008 Репутация: нет Всего: нет |
программу. И другого вызова в данном случае не получится.
НО у меня оно дожидается окончания работы. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |