# [C] Sleep unter Linux?



## wusch (18. März 2004)

Sorry, aber wenn ich unter Linux Sleep benutze, dann wartet er bei werten unter 1 gar nicht bzw man merkt es nicht und bei Werten über 1 bzw gleich 1 wartet und wartet und wartet er. Kann mir da einer weiterhelfen?


----------



## kiteflyer (19. März 2004)

sleep
was hast du denn genau angegeben?

so ungefähr?
sleep [OPTION]... ZAHL[SUFFIX]
s für Sekunden, m für Minuten, h für Stunden, d für Tage


----------



## Radhad (21. März 2004)

Also Sleep() wird normalerweise in Millisekunden angegeben.

D.h. für eine Pause von einer Sekunde musst du

Sleep(1000);

eingeben. Bei Sleep (1); wartet das Programm nur eine Millisekunde, da kannst du natürlich nichts sehen.


----------



## Radhad (21. März 2004)

Sorry, ein Fehler meines PC's! Bitte löschen


----------



## Radhad (21. März 2004)

Sorry, ein Fehler meines PC's! Bitte löschen


----------



## Kachelator (21. März 2004)

<ot>
@Radhad: Deine Beiträge kannst du selber löschen, wenn du "Editieren" anklickst und dann ganz oben nach dem Abschnitt mit der  Bezeichnung "Beitrag löschen" suchst. Ist selbsterklärend.
</ot>


----------



## MCrookieDe (24. März 2004)

Wie kann man die Funktion sleep(); unter windows nutzen
Z.b. mit Borland Compiler. 
Muss da irgent eine besondere header - Datei eingefügt werden?

Gruß
Martin


----------



## Kachelator (24. März 2004)

Unter Windows musst du Sleep() verwenden. (#include <windows.h>)


----------



## Jacizzle (10. Februar 2006)

Warum löschen? ;o) Ich hab den gleichen fehler und würde jetzt gerne mal wissen warum... ich hab nen code unter Linux geschrieben der ca. so geht


```
for( ; ; )
{
    printf("Bla");
    sleep(5000); (Habs auch schon mit anderen zahlen versucht, 5 usw.)
    printf("Blubb");
}
```

und der wartet und wartet und wartet und da kommt nix.. bis ich mit str + c wieder abbreche...

Wenn du das Problem auch hattest, kannste mir ja ma erklären worans lag, oder jemand anderes von mir aus bitte...

Weil ich muß ne Endlosschleife machen, in der in nem takt von 5 sekunden 3 - 4 verschiedene sachen immerwieder ausgegeben werden.


----------



## deepthroat (10. Februar 2006)

Hi.

Die Funktion sleep (#include <unistd.h>) - und nicht Sleep - wartet eine bestimmte Anzahl von *Sekunden*. 5000 Sekunden sind eine ganz schön lange Zeit 1h 23min 20 sec.

Die Funktion usleep (#include <unistd.h>) wartet eine bestimmte Anzahl von Microsekunden (das u soll ein µ (mü) für micro darstellen).

Gruß


----------



## Jacizzle (10. Februar 2006)

Wie gesagt, ich habs auch schon mit 5 sekunden versucht .. also sleep(5) oder sleep(10) das ging alles nicht.. 

Wenns von interesse is, kann ich ja meinen Code mal hier reinposten, zumindestens das stückchen.


----------



## deepthroat (10. Februar 2006)

Jacizzle hat gesagt.:
			
		

> Wenns von interesse is, kann ich ja meinen Code mal hier reinposten, zumindestens das stückchen.


Ja, das wäre eine gute Idee.


----------



## Jacizzle (10. Februar 2006)

Also der Code is folgender:


```
for( ; ; )
    {
	ref = fscanf(pfile, "%s", Zeile);
	if (strncmp(Zeile, tmpZeile, strlen(tmpZeile)) == 0) 
	{
	 	strcpy(IP,strchr(Zeile, '=')+1);
		break;
	}
    }	
	
     for( ; ; )
     {
	printf("Test %s", IP);
	sleep(10);
        printf("Test");
     }
```

Also ich glaube den ersten Teil des Codes hab ich von dir in einem anderen Thread gekriegt. Deswegen muß ich ihn dir glaub ich nicht mehr erklären. strcpy(IP,strch... usw. hab ich nur gemacht weil ich die IP Adresse die dabei rauskommen soll in einer eigenen Variable stehen haben muß, weil ich die nicht ausgeben will über printf() .. sondern an nen Display senden will mit ner funktion wo ich die variable IP dann übergebe...

Falls jemand anderen interessieren sollte worums im ersten teil des codes geht, da wurde mir von deep schon sehr geholfen ;o):


```
http://www.tutorials.de/forum/c-c/235773-ansi-c-dateien-bestimmtes-stueck-zeile-auslesen.html
```

Im zweiten soll sollte das ganze dann so aussehen, dass er erst die IP Zeile ausgibt, dann 10 bzw. 5 sekunden wartet, danach was neues ausgibt usw. usw.

Wenn ich den Code ausführe, gibt er garnix aus und bleibt hängen bis ich str + c drücke. Wenn ich die for - schleife rausnehme und einfach nur die Zeile 

```
printf("Test %s", IP);
```
dahin mache wo jetzt die forschleife ist, funktionierts, deswegen denk ich das es irgendwie an der forschleife oder an der sleep() - funktion liegt...

So hoffe habs gut genug beschrieben :-D


----------



## deepthroat (10. Februar 2006)

Die Standardausgabe ist (zeilenweise) gepuffert - das heißt das nichts ausgegeben wird ehe  der Puffer nicht voll ist bzw. ein Newline ausgegeben wird.

Gruß


----------



## Jacizzle (12. Februar 2006)

Ich wollt dir nochmal danken ;o) funktioniert jetzt ..- zumindestens bei mir zu Hause am PC simuliert in der Konsole ;oD .. ich bin ma gespannt ob das auch auf meiner arbeit am display funktioniert was ich programmieren sollte...


----------



## deepthroat (12. Februar 2006)

Kein Problem. Übrigens kannst du die Ausgabe auch erzwingen indem du fflush benutzt (wenn du z.B. zwischen den Intervallen kein Newline ausgeben möchtest).

```
for( ; ; ) {
  printf("abc");
  fflush(stdout);
  sleep(5);
}
```

Gruß


----------

