Pokaż wyniki 1 do 7 z 7

Temat: Pętla z funkcją sleep() nie działa (Linuks)

  1. #1

    Domyślnie Pętla z funkcją sleep() nie działa (Linuks)

    Napisałem sobie taki mały program:
    Kod:
    #include <stdio.h>
    #include <time.h>
    #include <unistd.h>
    #include <stdlib.h>
    
    
    int main()
    {
      int zero=time(NULL);
      printf("Czas startu: %d\n\n",zero);
      int czas;
      for(;;)
      {
        int czas=time(NULL)-zero;
        printf("\r %d",czas);
        sleep(1);
      }
      
      return 0;
    }
    i jak go uruchamiam to blok pętli nie wykonuje się, a program działa (sprawdzałem wstawiając printf na początku). Ktoś może wie dlaczego program nie działa jak trzeba?
    "a imię jego będzie czterdzieści i cztery"
    A. Mickiewicz Dziady cz. III

  2. #2
    Zarejestrowany
    Jul 2007
    Skąd
    C:\Perl\bin
    Postów
    1,578

    Domyślnie

    Kod:
     for(;;)
    co to robi? imo to jest przyczyna, ale nie kodze w c, wiec nie wiem
    War, war never changes.

  3. #3

    Domyślnie

    Cytat Napisał GSG-9 Zobacz post
    Kod:
     for(;;)
    co to robi? imo to jest przyczyna, ale nie kodze w c, wiec nie wiem
    jest to pętla nieskończona. Próbowałem też while(true) i to samo. ale to nie jest przyczyną bo:
    * pętlę zadeklarowałem: for(int i=0;i<1000;i+=1) - dalej nie działa
    * usunąłem z pętli funkcję sleep - działa, ale wykorzystuje 30% procesora.
    "a imię jego będzie czterdzieści i cztery"
    A. Mickiewicz Dziady cz. III

  4. #4
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Cytat Napisał rafal44 Zobacz post
    * usunąłem z pętli funkcję sleep - działa, ale wykorzystuje 30% procesora.
    ten przypadek w kolko mieli jak tylko szybko potrafi - 30% nie jest zle, w pewnych przypadkach widzialem duuuuzo wiecej, ogolnie procek idzie >90%.
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  5. #5

    Domyślnie

    bo masz
    printf("\r %d",czas);
    zamiast
    printf("\n %d",czas);

  6. #6

    Domyślnie

    Ok, działa. Ale ja chce, żeby to było wyświetlane w jednej linii. Dlaczego nie działa właśnie przy funkcji sleep?
    Zrobiłem nawet tak (bez krytyki proszę)
    Kod:
    start:
    czas=time(NULL)-zero;
    printf("%d",czas);
    sleep(1);
    goto start;
    i dalej nie działało.
    Co wspólnego ma \r z funkcją sleep?
    "a imię jego będzie czterdzieści i cztery"
    A. Mickiewicz Dziady cz. III

  7. #7

    Domyślnie

    Cytat Napisał rafal44 Zobacz post
    Ale ja chce, żeby to było wyświetlane w jednej linii. [...]
    Co wspólnego ma \r z funkcją sleep?
    aha, jak ma byc w jednej linii to \r
    \r nie ma nic wspolnego ze sleepem
    wpisz
    fflush(stdout);
    po printf'ie
    bo dopoki nie dasz znaku nowej linii, to przez jakis czas (ale nie wiem jaki) wyjscie programu bedzie buforowane

Podobne wątki

  1. Proxy - dlaczego nie działa?
    By adulescens in forum Anonimowość w sieci
    Odpowiedzi: 8
    Autor: 10-15-2008, 15:50
  2. nie działa MP??
    By 4ndr1u in forum Newbie - dla początkujących!
    Odpowiedzi: 5
    Autor: 09-17-2008, 13:22
  3. Shellcode nie działa
    By Ormi in forum Assembler
    Odpowiedzi: 9
    Autor: 07-20-2008, 13:31
  4. Dlaczego nie działa??
    By Achilles1991 in forum PHP/CGI/ASP/JSP/J2EE
    Odpowiedzi: 2
    Autor: 11-25-2007, 08:19
  5. Mój kod nie działa.Why?:(
    By fedor in forum Linux
    Odpowiedzi: 2
    Autor: 06-07-2007, 16:02

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj