데몬으로 수행한 후 대기기간 동안에는 CPU사용하지 않는 방법없

ctall의 이미지

정해진 날자에 특정한 작업을 수행하려는 프로그램을 짜고 있는데요...

while(1)
{
if( 특정날자 조건)
{
.... 수행할 작업
exit(0);
}
}

단순 무식하게 이런식으로 짜고, 데몬으로 수행했더니

top을 본 결과 이넘이 CPU를 거의 다 사용하고 있는걸루 나와버리네요.

특정한 날자가 될때까지 대기할때 자원은 사용하지 않고 기다리게 할 수 있는 방법 없을까요?

읽어주셔서 감사합니다. (__)

elien의 이미지

while(1) {...} 과 같이 하시면 거의 모든 CPU 자원을 끌어다 쓴다고 보시면 되겠습니다.
이러한 방식을 polling 이라고 하지요 (cf. interrupt)

cron 을 쓰시면 어떨까요?
http://kldp.org/Translations/html/LAME/using-cron.html

훗, 못 믿겠나?

정태영의 이미지

elien wrote:
while(1) {...} 과 같이 하시면 거의 모든 CPU 자원을 끌어다 쓴다고 보시면 되겠습니다.
이러한 방식을 polling 이라고 하지요 (cf. interrupt)

cron 을 쓰시면 어떨까요?
http://kldp.org/Translations/html/LAME/using-cron.html

busy waiting 이라고 하죠 :)

sleep 등을 이용하게 되면... 스케쥴링이 일어나서 다른 프로세스에게 우선권을 넘겨주고 idle 상태로 들어가기 때문에 CPU 자원을 좀 놀게 해줄 수 있습니다 ....

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

elien의 이미지

아... 용어선택에 잘못이 있었네요잉
바로 잡아주셔서 감사합니다 :)

훗, 못 믿겠나?

익명 사용자의 이미지

ctall wrote:

...
while(1)
{
if( 결과=특정날자 조건()) // 결과 : 특정날자 조건까지 남은 시간을 초로 환산한 값
{
.... 수행할 작업
exit(0);
}
else
sleep(결과);

}
...
익명 사용자의 이미지

Anonymous wrote:
ctall wrote:

...
while(1)
{
if( 결과=특정날자 조건()) // 결과 : 특정날자 조건까지 남은 시간을 초로 환산한 값
{
.... 수행할 작업
exit(0);
}
else
sleep(결과);

}
...

결과 == 특정날짜조건
결과 >= 특정날짜 조건

mr.lee의 이미지

무조건 cron을 쓰시라고 말씀드리고 싶군요.

아 만약 윈도우라면... 음 윈도우엔 cron같은 기능을 할 수 있는 거시기가 없을련가요?

eungkyu의 이미지

윈도우즈도 제어판 -> 예약된 작업 가면 할 수 있지요.

용가리의 이미지

sleep 이나 다른것 보다는 select를 사용하실 것을 권합니다.

특히 usleep과 같은 함수의 경우 thread unsafe인 경우가

많으므로 사용에 주의를 하시고요. 그리고 특정 날짜에만

어떤 이벤트를 수행하시고 싶으시다면 위의 SaNha 님의 답변처럼

cron에 등록해서 사용하시는 것이 훨씬 간단할 것입니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.