프로세스 제어를 할 수가 있나요??
글쓴이: fedious / 작성시간: 목, 2011/09/15 - 11:48오후
부모프로세스로부터 생성된 A, B 두개의 프로세스가 소켓방식(UDS)으로 데이터를 주고 받는데요.
중간에 사용자가 명령(전송 버튼을 클릭하는 등의 행위)을 주어야지만 데이터를 전달하도록 만드려고 합니다.
부모로부터 생성된 A프로세스는 funcA()함수에서 서버역할을 설정합니다. B프로세스는 funcB()에서 클라이언트 역할을 설정합니다.(소켓방식 지정하고, UDP방식이므로 클라이언트가 서버한테 메세지보내서 서버가 클라이언트 주소 인식하고 등의 설정)
그후 서버 프로세스가 사용자의 입력을 받으면 sendto()함수를 사용해서 클라이언트에게 메세지를 전송하려고 하는데요.
제 짧은 지식으로는 A프로세스를 대기 상태로 전환시키고, 필요할 때 다시 작동시키고 하는 그런 시스템콜 같은 건 없는 것 같은데요
그래서 생각한게 A프로세스를 while문 안에 가두어 두고 계속 어떤 변수를 체크하는 if문을 넣는 것입니다. 그래서 변수가 조건에 맞으면 sendto()함수를 호출하는 것이죠.
그러니까..
int var = 0; // 전역변수 void funcA() { 소켓설정작업.... while(1) { if (var == 1) { sendto(); // 메세지 전송 var = 0; // 다시 다음 명령이 있을 때까지 while문 뺑뺑이 } } }
이런식으로 A프로세스를 while문안에 가두어 두고 var변수로 메세지전송을 제어하는 것입니다.
그래서 사용자가 버튼을 클릭하면 var = 0을 만들어 메세지를 전송할 수 있도록이요.
근데 이렇게하면 var라는 전역변수를 써야 하는게 싫어서요;; 그렇다고 공유메모리를 만들기도 그렇고...
혹시 프로세스를 제어할 수 있는 함수라던지 그런건 없나요??
Forums:
>> 서버 프로세스가 사용자의 입력을 받으면 제가
>> 서버 프로세스가 사용자의 입력을 받으면
제가 질문을 제대로 이해를 못한 것 같기도 한데요.
이 부분에서 서버 프로세스는 사용자의 입력을 기다리게 되므로 이 부분에서 자연스레 대기 상태가 걸릴 것 같습니다.
cui라면 stdin의 입력을 기다리는 함수에서 걸려있을 거고
gui면 event를 기다릴 거고요.
대기는 알아서 되니, 새로운 입력이 들어왔을 때 재빨리 처리하고 다시 입력 대기 상태로 들어가면 되지 않을까요?
아!!
프로세스 안에서 GUI클래스를 사용하면 되는거였군요!!
아 우문현답이십니다ㅎㅎ
일단 한번 해보겠습니다:)
댓글 달기