Hi, weis einer warum 'sleep( -1)' (man 3 sleep) nicht so funktioniert wie es soll, d.h. anstatt moeglichst lange zu schlafen, kommt die Funktion sofort zurueck? Ciao Sebastian
Hi, On Fri, 27 Jun 2003, Sebastian Huber wrote:
weis einer warum 'sleep( -1)' (man 3 sleep) nicht so funktioniert wie es soll, d.h. anstatt moeglichst lange zu schlafen, kommt die Funktion sofort zurueck?
Oh, ein huebscher Fehler. sleep() ist mit Hilfe von nanosleep() implementiert, welches struct timespec benutzt, welche signed Members enthaelt. Ich forwarde den Bug an unsere glibc Leute. Ciao, Micha.
Sebastian Huber wrote:
Hi, weis einer warum 'sleep( -1)' (man 3 sleep) nicht so funktioniert wie es soll, d.h. anstatt moeglichst lange zu schlafen, kommt die Funktion sofort zurueck?
in meiner Manpage zu sleep steht folgendes: unsigned int sleep(unsigned int seconds); Das ist eine SuSE 8.2. Wo hast Du denn Deine Manpage her, dass man da ein signed uebergeben darf? Bis denne, Michael
* Am Die, 01 Jul 2003 schrieb Michael Schulz:
Sebastian Huber wrote:
Hi, weis einer warum 'sleep( -1)' (man 3 sleep) nicht so funktioniert wie es soll, d.h. anstatt moeglichst lange zu schlafen, kommt die Funktion sofort zurueck?
in meiner Manpage zu sleep steht folgendes:
unsigned int sleep(unsigned int seconds);
Das ist eine SuSE 8.2. Wo hast Du denn Deine Manpage her, dass man da ein signed uebergeben darf? Bis denne,
Was ist denn ein -1 an eine Funktion, die unsigned erwartet, anderes, als die größte mit unsigned darstellbare Zahl? Mach mal: unsigned i; i = -1; cout << i; Schön finde ich das allerdings nicht. Gruß Christoph -- Christoph Maurer - Tux#194235 - christoph-maurer@gmx.de
Christoph Maurer wrote:
* Am Die, 01 Jul 2003 schrieb Michael Schulz:
Sebastian Huber wrote:
Hi, weis einer warum 'sleep( -1)' (man 3 sleep) nicht so funktioniert wie es soll, d.h. anstatt moeglichst lange zu schlafen, kommt die Funktion sofort zurueck?
in meiner Manpage zu sleep steht folgendes:
unsigned int sleep(unsigned int seconds);
Das ist eine SuSE 8.2. Wo hast Du denn Deine Manpage her, dass man da ein signed uebergeben darf? Bis denne,
Was ist denn ein -1 an eine Funktion, die unsigned erwartet, anderes, als die größte mit unsigned darstellbare Zahl?
Mach mal: unsigned i; i = -1; cout << i;
Schön finde ich das allerdings nicht.
darauf wollte ich nicht hinaus. Ich wollte eigentlich wissen wo er das herhat, dass sleep sich so verhaelt? Wie gesagt (o. auch nicht :-) meine Manpage gibt das nicht her. Bis denne, Michael
Hi, On Tue, 1 Jul 2003, Michael Schulz wrote:
darauf wollte ich nicht hinaus.
Das ist aber genau der Grund.
Ich wollte eigentlich wissen wo er das herhat, dass sleep sich so verhaelt? Wie gesagt (o. auch nicht :-) meine Manpage gibt das nicht her.
Doch. sleep nimmt unsigned. Ein sleep(-1) ist also == sleep(UINT_MAX). Ausserdem soll sleep() soviele Sekunden wie angegeben warten (unterbrochen von signals). Mithin muesste er auf ner 32bit Maschine 4294967295 Sekunden warten. Tut er aber nicht, und den Grund habe ich erklaert. Ciao, Micha.
On Tuesday 01 July 2003 10:01 am, Michael Matz wrote:
Hi,
On Tue, 1 Jul 2003, Michael Schulz wrote:
darauf wollte ich nicht hinaus.
Das ist aber genau der Grund.
Ich wollte eigentlich wissen wo er das herhat, dass sleep sich so verhaelt? Wie gesagt (o. auch nicht :-) meine Manpage gibt das nicht her.
Doch. sleep nimmt unsigned. Ein sleep(-1) ist also == sleep(UINT_MAX). Ausserdem soll sleep() soviele Sekunden wie angegeben warten (unterbrochen von signals). Mithin muesste er auf ner 32bit Maschine 4294967295 Sekunden warten. Tut er aber nicht, und den Grund habe ich erklaert.
Der Hinweis auf die Manpage ist schon gerechtfertigt, deshalb habe ich auch
die Frage an die Mailingliste gestellt.
man 3 sleep
[...]
RETURN VALUE
Zero if the requested time has elapsed, or the number of
seconds left to sleep.
[...]
Normalerweise steht doch da, was in einem Fehlerfall zurueckgegeben wird und
auch der Bugabschnitt hat keinen Hinweis parat. Folgendes Testprogramm
liefert eine Fehlermeldung:
#include
participants (4)
-
Christoph Maurer
-
Michael Matz
-
Michael Schulz
-
Sebastian Huber