Linux 시스템에서 프로세스의 pid가 있으면 다음을 사용하여 해당 프로세스의 stdin에 쓸 수 있습니다.
/proc/<pid>/fd/0
하지만 MacOS에서는 이것이 불가능해 보입니다. 나는 mkfifo
/named 파이프를 사용해야 한다고 들었습니다.
그러나 명명된 파이프를 사용하면 문제를 해결하기가 더 어려워집니다. 프로세스 시작을 제어하는 경우 MacOS에서 파일 시스템에 fd에 대한 참조를 저장하는 방법이 있습니까?
예를 들어, 이렇게 하면:
#!/usr/bin/env node
node script.js &
NODEJS_PID=$!
위의 NODEJS_PID 변수에 표시된 대로 프로세스의 pid를 쉽게 얻을 수 있습니다. 하지만 이 Nodejs 프로세스의 stdin 파일 설명자에 대한 참조를 캡처하는 방법이 있습니까?
다른 프로세스에서 해당 fd에 써야 하기 때문에 fd에 대한 경로를 얻을 수 있다면 멋질 것입니다.
답변1
OS X의 PID를 알고 있으므로 lsof
다음이 도움이 될 수 있습니다.
lsof -p 12345 | awk '$4=="0u"{print $NF}'
/dev/ttys039
# then you can write to the FD
echo "hi" > /dev/ttys039