나는 떠들썩한 파티에서이 프로그램을 실행할 때 :노드 블록 child_process.exec에서 fifo 파이프를 여는 이유는 무엇입니까?
mkfifo im-a-pipe && node -e '
var fs = require("fs")
var childProcess = require("child_process")
console.log("pre-open")
fs.open("im-a-pipe", "w", function(err, fd){
if(err)
throw err
console.log("opened")
})
console.log("post-open")
childProcess.exec("echo wat")
console.log("YOU CAN NOT SEE MEEE")
'
나는 다음과 같은 출력 예상 : 처음 두 행를 인쇄 한 후
pre-open
post-open
YOU CAN NOT SEE MEEE
하지만 그 대신 노드 대기 : 나는
pre-open
post-open
해요 아마도 뭔가가 다른면을 열 때까지 파이프가 막히는 것과 관련이 있다고 생각하지만이 동작은 나를 놀라게합니다.
나는이 기능들이 어떻게 작동 할 것으로 생각 되나?
네, 다른 프로세스가 읽기 위해 파이프를 열 때까지 파이프가 작성자를 차단한다는 것을 이해합니다. 하지만 여기서는 두 가지가 진행 중입니다. 1) Node.js는 일반적으로 논 블로킹 인터페이스를 사용하고 childProcess.exec는 차단해서는 안됩니다. 2) 프로세스는 파이프에 대한 호출을 차단하지 않습니다. –