powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Серверный JavaScript (Node.js, Ringo, Nitro, Sling) [игнор отключен] [закрыт для гостей] / Тест работы с потоками stdin и stdout
3 сообщений из 3, страница 1 из 1
Тест работы с потоками stdin и stdout
    #40071234
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаю книжку по потокам... Там первым же примером есть такой код

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
process.stdin.setEncoding('utf8')

process.stdin.on('readable', function() {
	var input = process.stdin.read();
	if (input !== null) {
		process.stdout.write(input)
		var command = input.trim();
		if (command == 'exit') {
			process.exit(0);
		}
	}
})


Автор уверяет что процесс завершится если с клавиатуры набрать exit .
У меня же все завершается при вводе любой строки. Т.е. происходит ожидание только "первой порции" из потока, обработка и конец программы...

Запускаю так
Код: javascript
1.
node tmp.js


Далее набор символов и нажимаю Enter .
Происходит вывод введенного мной и программа завершается.

Вот меня и заинтересовали такие моменты:
- Почему сначала ожидание события есть, а после ввода его уже нет?
- Может в примере чего-то не хватает?
...
Рейтинг: 0 / 0
Тест работы с потоками stdin и stdout
    #40071288
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На другом форуме предложили применить другое событие потока sdtin...

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
process.stdin.setEncoding('utf8')
process.stdin.on('data', function(input) {
    if (input !== null) {
        process.stdout.write(input)
        if ( input.trim() === 'exit') {
            process.exit(0);
        }
    }
})



Этот вариант действительно работает пока не введешь с клавиатуры слово exit .
...
Рейтинг: 0 / 0
Тест работы с потоками stdin и stdout
    #40071404
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот такой еще вариант предложили...

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
process.stdin.setEncoding('utf8')

process.stdin.on('readable', function() {
  var input = process.stdin.read();
  if (input !== null) {
    process.stdout.write(input);
    var command = input.trim();
    if (command == 'exit') {
      process.exit(0);
    }
    process.stdin.resume()
  }
})



И он оказался более жизнеспособным в другом примере из книги.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Серверный JavaScript (Node.js, Ringo, Nitro, Sling) [игнор отключен] [закрыт для гостей] / Тест работы с потоками stdin и stdout
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (8): Анонимы (5), Yandex Bot, Google Bot 5 мин., Bing Bot 6 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]