Передайте поток между stdin и stdout - PullRequest
0 голосов
/ 12 апреля 2020

Мы можем выводить строку за строкой на nodejs через потоковую трубу от stdin до stdout , то есть от Читаемые в Доступные для записи поток:

process.stdin.pipe(process.stdout);

Смущает, что он также работает так же, как и раньше, с stdout до stdin , то есть с Доступно для записи до Доступно для чтения поток ниже. Почему?

process.stdout.pipe(process.stdin);

@ EDIT

Аналогичный тест с io.Copy в golang воспроизведен вышеупомянутый вопрос. Похоже, что перекрестная проверка подсказывает, что встроенная реализация pipe не может быть неправильной на обеих действующих платформах.

 package main                                                                                                          

 import (                                                                                                              
     "io"                                                                                                              
     "os"                                                                                                              
 )                                                                                                                     

 func main() {                                                                                                         
     io.Copy(os.Stdout, os.Stdin)                                                                                      
     // io.Copy(os.Stdin, os.Stdout) /* Also works than expected. */                                                                
 }                                                                                                                     

@ EDIT 2

Для дальнейшего изучения еще один тест с Deno.copy на третьей платформе deno ведет себя как ожидалось:

Deno.copy(Deno.stdout, Deno.stdin); /* Works as expected. */
// Deno.copy(Deno.stdin, Deno.stdout); /* Fails as expected. */
...