이 게시물 은 내 질문의 일부에 대해서만 답변합니다. 내 문제는 / proc 파일 시스템에서 프로세스의 FD를 사용하여 실행중인 프로세스의 stdin에 쓰는 것이 동일한 영향을 미치지 않는다는 것입니다.
문제:
-
포트 10000에서 청취하기 위해 nc 시작 (이 프로세스는 추가 nc 1이라고 함)
nc -l 10000
-
다른 nc를 시작하여 청취 nc에 문자를 보냅니다 (nc 2가 됨)
nc localhost 10000
-
NC 2의 표준 입력에 쓰기
echo "some chars here" >> /proc/[PID-nc-2]/fd/0
문제 : “일부 문자는 여기에”리스닝 nc (nc 1)에 도달하지 않지만, nc 2의 콘솔에 BUT가 표시됩니다.
질문 : 왜 그리고 이것이 가능하게 할 수 있습니까?
답변
/proc/<PID>/fd/0
파이프가 아니기 때문에 예상대로 작동하지 않습니다 . 송신 측이 파이프에 연결된 stdin으로 호출하면 작동합니다.
수신 호스트에서
nc -l 10000
발신 호스트에서
mkfifo my.fifo
cat >my.fifo &
cat my.fifo | nc remotehost.tld 10000
지금 당신은 할 수 있습니다
echo "Hello World" >my.fifo
myprog >my.fifo
이 있습니다 cat >my.fifo
개방 선입 선출 (FIFO) 킵 할 필요가 그렇지 않으면 EOF가 전송됩니다와 연결이 조기에 마감됩니다. 연결을 끊으려면 fifo를 연 상태로 유지하는 고양이 프로세스를 종료해야합니다.
답변
링크 한 게시물에 대한 답변에서 언급 한대로 님이 /proc/pid/fd/0
아닌 에 글을 써야합니다 /proc/pid/fd/1
.