2009-10-17 4 views

답변

3

리눅스/OSX (실제로는 POSIX), 프로그래밍 (POSIX의 통화를 언어), 일반 체계 :

  1. 설치 소켓 ...
  2. close(0)
  3. fork()
  4. , close(1) (필요하지 , dup2는)
  5. dup2(socket, 0) 너무 닫습니다 ...하지만 명확성을 위해 추가됩니다 dup2(socket, 1)
  6. exec()

쉘 : nc을 사용하십시오. UNIX 용 https://stackoverflow.com/questions/1269400/is-this-a-fair-question-to-ask-in-a-software-engineering-interview-phase-1/1269577#1269577

+0

내가 사용하는 경우 : nc -e "program args"작동하지 않습니다. 주위에? –

+1

'nc -c "/ full/path/to/program args"'를 사용하십시오. – liori

+0

fork()가 필요하지 않습니다. –

0

, 쉘에서 : 일반적인 정보에 대한 http://www.askdavetaylor.com/how_do_i_reredirect_stdin_in_a_unix_or_linux_shell_script.html

Windows 용 http://www.mathinfo.u-picardie.fr/asch/f/MeCS/courseware/users/help/general/unix/redirection.html

, 소켓에 : 여기 http://www.unix.com/high-level-programming/79439-redirect-stdin-out-sockets.html

이 내 다른 대답 예 유닉스에 대한 설명, 리디렉션을위한 : http://www.rtems.com/ml/rtems-users/2007/october/msg00063.html

이제,이 프로그램은 프로그램에서 오는 stdin/out/err로 향하는 경로 만 리디렉션합니다.

저는 프로그램이 종료되기 전에 마지막 링크도 stdin/out/err을 복원한다는 사실을 좋아합니다. 이와 같이 변경하면 복원하는 것이 좋습니다.

여러 가지 방법으로 파이프를 사용할 수 있으며, 파이프를 소켓이나 파일로 가져 가면 stdin/out이 파이프로 리디렉션됩니다. 각 파이프가 일부 처리를 수행 할 수 있기 때문에 최종 목적지가 어디로 가는지 또는 진행 중에 일부 처리를 수행하려는 경우 전환 할 수 있으면 좋습니다.

3

xinetd이이 상황에서 도움이되지 않을지 궁금합니다. stdin에서 읽고 stdout에 쓰는 프로그램을 작성한 다음 xinetd는 소켓에서 수신 대기하고 필요한 I/O 소켓을 분리하여 프로세스에 연결하는 처리를 수행합니다.