직접 쓰는 것과 같은 효과 / 동작으로 실행중인 프로세스의 표준에 쓰기 일부에 대해서만

게시물 은 내 질문의 일부에 대해서만 답변합니다. 내 문제는 / proc 파일 시스템에서 프로세스의 FD를 사용하여 실행중인 프로세스의 stdin에 쓰는 것이 동일한 영향을 미치지 않는다는 것입니다.

문제:

  1. 포트 10000에서 청취하기 위해 nc 시작 (이 프로세스는 추가 nc 1이라고 함)

    nc -l 10000
    
  2. 다른 nc를 시작하여 청취 nc에 문자를 보냅니다 (nc 2가 됨)

    nc localhost 10000
    
  3. 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.


답변