윈도우즈에서 fork()사용에 관해서
글쓴이: 따스한이야기 / 작성시간: 화, 2006/11/28 - 6:52오후
현제 windows XP를 사용중이고 비주얼 스튜디오 6.0에서 작업중입니다
윈도우에서는 fork라는 함수가 존재하지 않더라구요
그래서 자료를 찾아보는 CreateProcess라고 함수가있던데
어떻게 사용하는지 또 어떤 방식으로 되어있는지에 되해서 알 수가 없더군요...
쓰레드를 사용하기는 코딩이 더 복잡해진다는 문제점 때문에 쓰레드말고 fork처럼 프로세서를 생성해서 만들고 싶습니다
어떻게 하는것인지 알려주세여
그리고 제가 정확하게 코딩하려고 하는것은
소켓을 이용하여 데이터를 전송받으면 그 데이터를 버퍼에 저장하고
저장된 버퍼의 데이터를 읽어들어와 Disk에 저장하는것입니다.
(여기서 말하는 disk는 DB사용입니다)
소켓으로 데이터를 전송받는것은 데이터를 disk에 저장하고있을때에도 계속 전송받아서 버퍼에 저장해야합니다
버퍼에서 데이터를 읽어올때는 pipe Line를 통하여 읽어오는것입니다.
고수닙들의 답변 기다리고있겠습니다.
Forums:
대략 MSDN 찾아보시믄
대략 MSDN 찾아보시믄 나오는데;;; 글구 케엘디피는 좀 윈도쪽 물어보심 까칠하지요^^;
어쨌든 대부분의 인자들은 NULL, FALSE정도 넘겨주시믄 되구요
구조체를 요구하는 경우(STARTUPINFO, PROCSS_INFO)은 하나 변수선언하셔서 ZeroMemory로 초기화하셔서 넘겨주시고 되돌리는 HANDLE 잘 받으셔서 쓰시믄 되죵..
글구 파이프 연결은 어케 하드라.;;;
먼저 CreatePipe로 파이프 만드시고 STARTUPINFO에 붙여주시믄 되는걸로.
관련주소: http://bdn.borland.com/article/15201
I'm NOT your father...
I'll not fix your computer...
----
The future is here. It's just not widely distributed yet.
- William Gibson
유닉스는 fork()를
유닉스는 fork()를 해도 파일 디스크립터를 이어받기 때문에 부모-자식 프로세스간에
파이프를 만들거나 하기 쉽지만, Win32 API의 CreateProcess()는 그런 관계가 완전히
끊어지는 것으로 알고 있습니다. named pipe를 생성하여 사용할 수도 있겠지만
그럴바에는 그냥 스레드 프로그래밍을 하거나 nonblocking socket으로 작성하세요.
Win32환경에서는 스레드 프로그래밍이 더 자연스러운 편입니다.
--
익스펙토 페트로눔
--
익스펙토 페트로눔
감사합니다
고수님들의 답변 감사합니다
감사합니다
고수님들의 답변 감사합니다
댓글 달기