fpurge 함수 말인데요
이거 사용하지 않고 입력 버퍼를 지울 수 없을까요?
문제가 생기는 경우는 fgets에서 정해진 버퍼를 넘어서 입력이 될때인데
예전에는 받아놓은 str의 끝 바이트가 '\n'인지 체크해서 아닐경우에는
while((ch=getc(stdin))!='\n'); 를 때려주곤 했는데 요새는 fpurge를 사용하고 있습니다 그런데 man을 자세히(?) 보니 ansi가 아니더군요 - -;;
더 예쁘게 해결할 수 없을까요? :)
:roll: 프로세스가 4개가 차례로 도는 프로그램을 만들고자 하는데요, 꼭 차례대로 돌아야하며 하나라도 죽으면 종료가 되어야 합니다.
우선 task를 돌려주는 프로그램이 있어서 fork()->execl()로 각각의 task를 실행하게 해주고, 공유메모리와 4개의 세마포어를 이용하여 서로 주고 받으면서 차례대로 실행을 하는것입니다. 각각의 태스크는 무한루프안에서 자기의 세마포어를 기다리다 받으면 실행하고 종료되면 다른 프로세스에서 세마포어를 주고 자기의 세마포어를 기다리는 식입니다.
다음은 헤더파일에 전역으로 구조체를 선언하고
cgi로 데이터를 받아 선언된 구조체에 각각 넣고.
이를 화면에 출력하는 것입니다.
1초 간격으로 계속해서 cgi를 실행하고요..
그런데.. 이렇게 사용하면. free명령을 통해 리눅스에서 보면..
계속해서 사용가능한 메모리가 줄어듭니다.
기본적으로 전역으로 선언한 메모리는 메인프로그램(여기서는 cgi)이
죽으면 free되지 않나요?
다른 처리를 가해야 하나요..
어떻게 해야하는지 알려주세요..
참고로. ps하면 이전에 수행한 cgi는 죽어 있습니다.