[질문]딜레이를 줄려고 합니다.

p_teto의 이미지

넘 허접한 질문일지도... ^^

예를 들면 화면에 ...... <-- 이런식으로 프린트가 된다면 점과 점사이의

디레이를 1초씩 줄려고 하면 어떻게 해야하는지 궁금합니다.

#include <stdio.h>
#include <time.h>

#define DELAY 1

int main()
{
        time_t start_Time;

        start_Time = time(NULL);

        while (1) {
                if (difftime(time(NULL), start_Time) >= DELAY) {
                        printf("==> After %d Second\n\n", DELAY);
                        start_Time = time(NULL);
                }

        }

        return 0;
}

현제 이런식으루 구현을 했는데 \n을 빼주면.. 출력이 안됀다는 문제점도 있고

게시판을 검색해보니 시그널 함수를 활용하는것에 대해서도 있더군요.

시그널 함수로 구현을 한다면 어떻게 구현을 해야하는지 궁금합니다.

p.s 제가 너무 몰라서.. 게시판을 검색해 봐도.. 이해가 안돼서.. ㅜ.ㅡ.. 답변 부탁드려요 ^^

cdpark의 이미지

sleep(1);
fflush(stdout);

alsong의 이미지

추가로 현재 사용하신 코드는 엄청난 CPU부하를 자랑합니다.
한마디로 박터지지요 ^^; 그렇게 만드시면 안됩니다. ^^;

1초이하의 딜레이가 필요할 시에는 usleep or nanosleep등의 함수를
사용할 수 있습니다.

그나저나 백수 언제 탈출하냐... ㅡㅡ; 배고파라.

mach의 이미지

#include <sys/time.h>

my_usleep(long sec, long usec)
{
   struct timeval timeout;

   timeout.tv_sec = sec; //초
   timeout.tv_usec = usec%1000000;//마이크로 초 1/1000000:즉, 0-999,999사이의 값
   select( 0, (fd_set *)0, (fd_set *)0, (fd_set *)0, &timeout); 
   //select()로 usleep()을 구현할 수 있다.
}

main()
{
   char buff[1024];

   sprintf( buff, "%c", '.');

   while(1) {
      my_usleep( 1, 500000); // 1.5초간 sleep
      write(1, buff, 1); // printf()는 출력시 라이브러리 수준에서
                         // 버퍼링수행(fflush()사용필요)
                         // write() : 버퍼링없음
                         // 출력문자열 포맷팅은 sprintf()로 처리함
   }

}

구한말 유닉스는 usleep()이 없었습니다. 하여간, 거두 절미하고, 위 코드도 사용가능하겠지요? 후일 select()함수를 배우게 될때쯤이면 보탬이 조금 될지도 모르겠네요.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.