1개 스레드로 다 하려면 키입력에 대해 non-blocking I/O를 수행하는 방법이 있습니다. 콘솔이라면 curses나 conio의 입력 관련 함수를 사용할 수 있습니다.
스레드를 2개 이상 두면 공유하는 메모리 영역에 루프의 종료요건에 해당하는 상태변수를 두는 방법이 있습니다. 한 스레드는 상태변수를 확인하며 루프를 돌게 하고 키입력을 대기하는 스레드가 원하는 키입력을 받으면 상태변수를 변경하여 루프 도는 스레드가 종료하게 만들면 되겠죠.
Ctrl+C를 눌렀을때
Ctrl+C를 눌렀을때 SIGTERM 을 받을테니, 시그널 핸들러를 만드셔서 핸들러에서 변수값을 바꿔주고, 루프에서는 그 변수의 값을 검사하면서 반복여부를 결정하게 하면 되지 않을까요.
좋은 하루 되세요!
1개 스레드로 다
1개 스레드로 다 하려면 키입력에 대해 non-blocking I/O를 수행하는 방법이 있습니다. 콘솔이라면 curses나 conio의 입력 관련 함수를 사용할 수 있습니다.
스레드를 2개 이상 두면 공유하는 메모리 영역에 루프의 종료요건에 해당하는 상태변수를 두는 방법이 있습니다. 한 스레드는 상태변수를 확인하며 루프를 돌게 하고 키입력을 대기하는 스레드가 원하는 키입력을 받으면 상태변수를 변경하여 루프 도는 스레드가 종료하게 만들면 되겠죠.
댓글 달기