Processes created using spawn with a pipe have no /dev/stdin
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- JavaScript
- Estrellas
- 122k
- Forks
- 37.3k
- Merge medio
- 4 d 2 h
- PR fusionados (30 d)
- 283
Descripción
- Version: v8.9.4
- Platform: Linux 4.9.0-6-amd64 #1 SMP Debian 4.9.82-1+deb9u3 (2018-03-02) x86_64 GNU/Linux
- Subsystem: child_process
The code below fails with cat: /dev/stdin: No such device or address.
const {spawn} = require('child_process');
const proc = spawn('cat', ['/dev/stdin'], {stdio: ['pipe', process.stdout, process.stderr]});
Apparently Node spawns sub processes in a way that there is no /dev/stdin allocated.
I think this is a NodeJS bug - on UNIX, a sub process should be able to open /dev/stdin if there is a stdin for it. The following Go program for example works perfectly fine:
func main() {
cmd := exec.Command("cat", "/dev/stdin")
cmd.Stderr = os.Stderr
cmd.Stdout = os.Stdout
stdin, _ := cmd.StdinPipe()
go func() {
stdin.Write([]byte("hello cat!\n"))
stdin.Close()
}()
cmd.Run()
}
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza en el subsistema child_process de Node.js y reproduce el ejemplo proporcionado spawn('cat', ['/dev/stdin'], ...) en Linux, comparándolo con el ejemplo de Go. Se considera completado cuando se haya establecido el comportamiento esperado de stdin en Unix y el fallo informado esté cubierto por una prueba de regresión.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- javascript, linux, node.js
- Área
- backend, operating-systems
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 45/100