포크를 사용하지 않고 두 프로세스간에 파이프를 사용할 수 있으며 소켓 예를 들어 파일 설명자를 공유 할 수 있습니까? 다른 솔루션이 필요하지 않습니다. 두 개의 프로세스 사이에 파이프가 필요합니다.포크없이 파이프를 사용할 수 있습니까?
7
A
답변
9
당신은 명명 된 파이프 (FIFO)을 사용할 수 있습니다
당신이 mkfifo <common path>
을 할 경우 사용 두 프로세스, 하나는 읽기를하고 하나는 쓰기에이 경로. 그런 다음 정상적인 파이프와 동일한 동작을합니다.
4
가장 간단한 해결 방법은 파일 시스템에 이름이있는 파이프 인 명명 된 파이프를 사용하여 두 프로세스가 모두이를 참조 할 수있게하는 것입니다. 명명 된 파이프는 mkfifo()
호출로 만들어지고 open()
으로 열립니다 (한 프로세스는 읽기 용으로, 다른 프로세스는 쓰기 용으로 열어야합니다).
당신 그래서 당신은 어떻게 든 다른 프로세스에 파이프를 생성하는 과정에서 열려있는 파일 설명을 통과해야 너무 관련이없는 두 프로세스와 익명 파이프를 사용할 수 있지만 할 수 있습니다. UNIX 도메인 소켓에서 SCM_RIGHTS
메시지를 사용하여이 작업을 수행 할 수 있지만 UNIX 도메인 소켓이 있으면 파이프 대신 통신 할 수 있습니다. 리눅스 고유의 방법은 두 번째 프로세스가 첫 번째 프로세스에서 파이프의 끝을 나타내는 /proc/<pid>/fd/<fd>
심볼릭 링크에 open()
을 사용하는 것이지만, 바로 바로크입니다.
관련 문제
- 1. LAN 컴퓨터에서 파이프를 사용할 수 있습니까?
- 2. OCaml에서 파이프를 사용할 수 있습니까? F 번호에
- 3. Xcode에서 포크없이 응용 프로그램을 열 수 있습니까?
- 4. ADO.NET Data Services는 명명 된 파이프를 전송으로 사용할 수 있습니까?
- 5. Windows에서 명명 된 파이프를 파일로 사용할 수 있습니까?
- 6. 이 코드에서 파이프를 어떻게 사용할 수 있습니까? C++?
- 7. while bash에서 변수를 사용할 수없고 bash에서 파이프를 사용할 수 없습니다.
- 8. 변수에 리디렉션과 파이프를 지정할 수 있습니까?
- 9. 파이프를 사용할 때 루비 캡처 입력
- 10. 에코 타임 스탬프 생성/에코 문자열에서 파이프를 사용할 수 없음
- 11. vxWorks 파이프를 사용할 때 왜 데이터가 손실됩니까?
- 12. 파이프를 닫지 않고 NamedPipeServerStream에서 BeginRead를 취소 할 수 있습니까?
- 13. 출력 파이프를 더 많이 색칠 할 수 있습니까?
- 14. Windows IPC : 익명 파이프를 통해 이진 데이터를 보낼 수 있습니까?
- 15. /dev/null보다 빠른 출력 파이프를 얻을 수 있습니까?
- 16. 파이프를 통해 F 키를 다른 프로그램으로 반향시킬 수 있습니까?
- 17. IP 주소로 원격 컴퓨터에서 명명 된 파이프를 만들 수 있습니까?
- 18. 파이프를 통과하는 트래픽을 어떻게 모니터 할 수 있습니까?
- 19. specflow (또는 작은 오이)에서 파이프를 벗어날 수 있습니까
- 20. 타이머를 사용할 수 있습니까?
- 21. alcheMo를 사용할 수 있습니까?
- 22. jquery를 사용할 수 있습니까?
- 23. 어떻게 사용할 수 있습니까?
- 24. 을 사용할 수 있습니까?
- 25. TestContext.Properties를 사용할 수 있습니까?
- 26. pushState를 사용할 수 있습니까?
- 27. 을 사용할 수 있습니까?
- 28. FluidMoveBehavior를 사용할 수 있습니까?
- 29. UIMoviePlayerController ... 사용할 수 있습니까?
- 30. killProcess를 사용할 수 있습니까?
@pst 유닉스 소켓은'connect()','accept()'등 완전히 다른 접근을한다. – glglgl