Ich mache ein Schulprojekt (muss in C entwickelt werden) und ich brauche es, um jeden X-Sekunden und Y-Sekunden nach der Ausführung des Programms Code auszuführen gestartet muss es enden.sleep() C gibt nicht den richtigen Wert zurück
Also schrieb ich:
alarm(Y);
s=X;
while(!end){
s = sleep(s); //because it generates some children that send signal to him and in that case i need to do other stuffs
if(s == 0){
//code to do each X seconds
}
}
Die Variable end
eine globale Variable auf 0 initialisiert ist, und wenn ein SIGALARM der Wert wird empfangen 1.
Wenn ich bekam haben X> Y der Code sollten alle X Sekunden nicht ausgeführt werden, aber wenn X = Y + 1, wird es einmal ausgeführt.
Können Sie mir sagen, warum dies geschieht?
Ich bin nicht sehr klar, ich verstehe Sie Problem mit Englisch, aber, können Sie grafisch sein ?, wie eine Zeitlinie für Operationen? –
[_mixing Anrufe an Alarm (2) und Schlaf() ist eine schlechte Idee._] (https://linux.die.net/man/3/sleep) –
Wenn auch das Handbuch des Schlafes sagt Mischen Alarm und Schlaf ist eine schlechte Idee, du solltest nicht einmal daran denken. – joemartin94