무한 루프 백그라운드 프로그램에 대해 도움좀 주세요~
글쓴이: goomba / 작성시간: 월, 2012/11/12 - 2:23오후
안녕하세요. 초보 프로그래머입니다.
이번에 백그라운드로 항상 돌아가면서 설정해둔
특정 시, 분, 초가 되면 어떠한 행동을 취하는 프로그램을 만들고 있습니다.
생각해본 소스는 다음과 같습니다
-----------------------------------------------
// 매일 10시 30분이 되면 특정 행동을 취하는 프로그램
struct tm *tm;
time_t t;
int hour, min, sec;
hour = 10;
min = 30;
sec = 0;
while(1)
{
time(&t);
tm = localtime(&t);
if (tm->tm_hour == hour && tm->tm_min == min && tm->tm_sec == sec)
{
// 소켓 통신 메시지 전송부
}
}
-----------------------------------------------
위 프로그램이 솔라리스 서버에서 돌아갈 소스인데
혹시 문제될 부분이있을까요?
아직 초짜라서 돌아가는 로직에 대해서 밖에 떠오르지 않고
예상되는 문제점이나 수정방안에 대해서는 딱히 떠오르지가 않네요..
보시고 저에게 도움될만한 말이나 개발 방향같은것좀 부탁드리겠습니다
감사합니다!!
Forums:
도움이 될지 모르겠지만.. 처음이라고
도움이 될지 모르겠지만..
처음이라고 말씀하시니깐....
1. 위 프로그램을 백그라운드로 잘 돌릴수 있을지 여부(저도 처음엔 백그라운드로 돌리는 방법을 몰라서....하하하하.)
2. 시그널 처리를 추가해 주면 좋을듯하고요.
3. 프로그램이 돌때 CPU 점유율이 높아 질것 같은 느낌이.. 무한 루프는 항상 그게 걱정이죠...ㅠ.ㅠ
crontab을 활용하는 방법은 어떠실런지.....
그럼 홧팅하세요!!
안녕하세요. 답변해주셔서 감사합니다. 돌려본 결과
안녕하세요. 답변해주셔서 감사합니다.
돌려본 결과 백그라운드로는 잘 돌아가네요
또 시그널 추가 지금 생각중이구요
crontab의 경우 무엇인지 모르겠어서 한번 찾아보겠습니다!
감사합니다~
man crontab
man crontab
세벌 https://sebuls.blogspot.kr/
...
개인용 서버가 아닌한 이런 프로그램 짜서 돌리면 관리자한테 매우 혼날 것 같은데요...
crontab을 쓰시거나, 꼭 그 프로세스가 떠서 시간을 체크해야 한다면 남은 시간을 체크해서 sleep하세요.
루프 안에서 sleep 주세요. sleep 없으면
루프 안에서 sleep 주세요. sleep 없으면 저거 cpu 엄청 잡아 먹습니다.
한가지 조언을 하자면 남은 시간을 계산해서 그 반타임만 sleep 하고
다시 깨어나서 남은 시간 체크하고 반 타임 sleep 하는걸로 해보세요.
sleep 1초도 그리 나쁜 선택은 아닙니다.
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
댓글 달기