[완료] C 프로그램 기술에 관한 질문..
글쓴이: Long_run / 작성시간: 목, 2012/05/24 - 4:31오후
리눅스 기반의 C프로그램을 짜고 있습니다..
어떤 프로그램을 while(1) 문을 사용해서 돌립니다..
이 while문은 1회 반복에 recvcnt를 1씩 증가시킵니다..(무한 루프)
여기서 질문이 있습니다..
1. 저는 while문을 프로그램 도중 특정 커맨드를 이용해서 빠져 나오고 싶습니다.
2. 빠져나오는 순간의 recvcnt 값을 보여주거나, 파일에 기록하고 프로그램을 종료하고 싶습니다.
기술적으로 이런 것을 할 수 있는 방법이 있나요? 혹은 어떤 키워드로 정보를 찾아봐야 하나요~
추가적으로는 모색할 수 있는 방안이 있는지.. 부탁드리겠습니다..^^
Forums:
fprintf()
fprintf()
알려주신 키워드로는...
항상 recvcnt를 파일에 기록하라는 말씀이신거 같은데 맞나요?
제가 질문에 적지 않아서 그런것 같은데 항상 저장하는 것은 아니고요..
종료시 그 순간의 값만 보여주거나 저장하기 위함입니다 ㅎㅎ
만약 알려주신대로 하면..
차선책은 종료전까지 모든 값을 기록하고 있다가
프로그램이 종료되면 마지막 값만 남기고
그 전 데이터를 모두 지우는 방법을 택해야 하는 걸까요..ㅎㅎ
int main(){
do(Anything);
your(Everthing);
best(Everytime);
}
아마 명령을 입력받는 동안 루프를 계속 돌리려고
아마 명령을 입력받는 동안 루프를 계속 돌리려고 하나요?
recvcnt는 무엇을 세기 위한 거죠?
음.. 명령을 입력받는 동안?..이란 부분이 이해가 잘 안되네요
질문에서 보다시피 어떠한 명령(커맨드)로 무한 반복문이 종료가 될 시..
프로그램이 그냥 종료되지 않고..
종료할때까지 증가시킨 recvcnt 값을 보여주거나 저장하는 것 입니다 ㅎㅎ
int main(){
do(Anything);
your(Everthing);
best(Everytime);
}
그거라면 윗분 답대로 fprintf(),
그거라면 윗분 답대로 fprintf(), printf()를 쓰면 됩니다.
라고 생각합니다.
반복문 종료는 어떤 식으로 해야할까요?
무한 반복문 종료는 어떤식으로 해야할까요?
특정 조건도 없는 while(1) 반복문에서요..ㅎㅎ
제 말은 fprintf() 나 printf()는 종료를 위한
수단은 아니라고 생각이 되서요...ㅎㅎ
int main(){
do(Anything);
your(Everthing);
best(Everytime);
}
break;
break;
break;
while(1){
recvcnt++;
}
이 상태에서 break; 라는
코드를 넣으려면 중간에 조건을 넣어야 하는데..
예를 들면 if(recvcnt == n) 같은..
제가 질문을 좀 상세히 안한 것 같긴한데..ㅠ ㅠㅎㅎ;
그럼 다시 질문드리는게 무한 루프문은
루프문 내에 조건문과 break; 문이 없이는 빠져나올 수 없는거죠?
제가 말한 특정 명령(커맨드)라는 것은..
좀 뜬금없지만 무한반복문이 돌고있는 도중에 어떤 키를 입력한다거나해서..
Ctrl+C 처럼 프로그램을 종료시키는 것이거든요..ㅎㅎ
int main(){
do(Anything);
your(Everthing);
best(Everytime);
}
그 외에는 goto문 없이는 불가능합니다. 조건을
그 외에는 goto문 없이는 불가능합니다.
조건을 체크하는 부분에서 Ctrl+C 눌렸는지 확인하거나, 별도의 스레드에서 키입력을 받을 수도 있겠지만, 프로그램 종료 전에 루프를 빠져나가려면 break 문을 써야 합니다.
그렇군요~!!
잘 알겠습니다 일단 입력체크 부분과 스레드에서 좀 더 검색해보고
시도해봐야 겠네요 감사합니다^^
int main(){
do(Anything);
your(Everthing);
best(Everytime);
}
혹은 while (...) //조건체크 하셔도
혹은
while (...) //조건체크
하셔도 됩니다.
음 ..
while loop 를 thread 로 돌리고, main 에서는 키입력 대기, 키입력 검사해서, while loop 의 탈출 조건을 주건 애가 빠져나오겠죵.
while 빠져나오면 바로 recvcnt 출력해주고..
thread 없이 단일 loop 에서라면 select 로 stdin 을 모니터링 해서 입력된 문자열을 비교하면 될테고..
꼭 명령어가 아니어도 된다면, signal handler 등록해서 while loop 의 탈출 조건을 줘도 되겠네요.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
감사합니다
스레드와 키입력 검사 부분에서의 키워드를 언급해주신 부분 감사드려요!!
알려주신 정보로 좀 더 공부해보도록 하겠습니다 감사합니다~!
int main(){
do(Anything);
your(Everthing);
best(Everytime);
}
댓글 달기