[완료]C언어 초보인데요, 이거 제대로 된건지 누가 좀 봐주세요 ㅠㅠ
글쓴이: netkwak / 작성시간: 월, 2009/06/08 - 5:06오후
C초보입니다.
여기저기 기웃거려서...
아래 코드를 만들었습니다.
if(!getstat(fd)) { int i; for(i=0;i<60;i++){ sleep(1); if (getstat(fd)){ break; } } if(i==60){ const char* w[] = { "/sbin/telinit", "0", NULL }; syslog(LOG_EMERG, "[!URGENT!] Failure detected."); execve("/sbin/telinit", (char**)w, e); } break; }
제가 구현하고 싶은건,
일단 에러가 검출되면 60초 동안 루프를 돌면서,
대략 60초 안에 회복이 되면 메인으로 돌아가고,
대략 60초가 지나도 계속 에러가 지속되면 시스템을 종료시키려는 코드인데요...
제대로 코딩 된건지 조언좀 부탁 드립니다.
-----------------------------
충고해 주신분들 덕분에 완료 했습니다.
모양새가 좋은지 나쁜지는 판단을 못하겠지만,
일단 제대로 동작하는걸 확인했습니다.
정말 감사합니다.
Forums:
아... 잘못되어 있네요 ㅠㅠ
중간에 잘못된 부분이 있는거 같아서,
goto 문으로 루프에서 빠져나오도록 고쳤는데요....
제대로 된건가요?
뭔가 되게 지저분해진거 같은데 ㅠㅠ
좀 깔끔하게 할 수 없을까요?
조언좀 부탁드려요~
그냥 돌려 보시고
그냥 돌려 보시고 정상적으로 동작하는지 판별하시면 될꺼같은데....
goto 보다 break.. 로만 빠져나와도 되지 않나요..?
if(i==60) 의 조건을 다시한번 확인하시는건...
루프 인덱스를 다시
루프 인덱스를 다시 조건식에 넣는 것은 바람직하다고 보여지지 않네요.
알아보기도 어렵고.
i 는 루프 안에서만 보이도록 하고, 별도로 상태 변수를 하나 정의하시는게 나을 듯 합니다.
-- 프로그래밍은 수필을 쓰듯이
다시 수정했습니다.
j 를 써서 수정했습니다.
이렇게 하는게 맞는건가요?
이렇게 하면 어떨까요?
--------------------------------------------------------------------------------------
조금씩이라도 전진한다.
조금 알아보기 쉽게 풀어서 쓰자면...
여러분들 조언덕분에 대충 감은 잡혔습니다.
그래서, 이렇게 하려고 합니다만....
다시포트감시 부분을 어찌 처리해야 할지 모르겠네요.
goto를 집어넣는게 제일 좋은가요?
break; 로 해결되는군요
시험삼아 break; 를 넣어봤는데, 잘 작동하네요.
충고 해주신 모든분들 감사합니다.
댓글 달기