Προς το περιεχόμενο

προσωρινη διακοπη προγραμματος (σε C)


poscaman

Προτεινόμενες αναρτήσεις

Δημοσ.

καλησπερα.θελω να φτιαξω το εξης σε C.θελω ενα προγραμμα (ακτος απ'τα υπολοιπα που θα κανει να εκτυπωνει ενα μην,και μετα απο t χρονο να συνεχιζει το προγραμμα.αυτο πως μπορω να το επιτυχω?

Δημοσ.

Μπορείς να καλέσεις την sleep(t) όπου t είναι seconds, ή την usleep(t) όπου t είναι microseconds. Και οι δύο αναστέλουν την εκτέλεση του προγράμματος για t χρόνο.

Δημοσ.

Αν οι παραπάνω ρουτίνες δεν είναι διαθέσιμες τότε μπορείς να χρησιμοποιήσεις το ANSI-C time_t και τις time & difftime του time.h

 

Το παρακάτω πρόγραμμα εκτυπώνει ένα μήνυμα και περιμένει ύστερα 5 δευτερόλεπτα πριν εκτυπώσει το επόμενο.

 

>
/* Wait 5 seconds */

#include <stdio.h>
#include <time.h>
#ifdef __BORLANDC__
  #pragma hdrstop
#endif

#ifdef __BORLANDC__
  #pragma argsused
#endif
int main(int argc, char* argv[])
{
  time_t ttStart, ttEnd;

  /* Let's wait for 5 seconds */
  printf(" Wait for 5 seconds ... ");

  ttStart = time(NULL);
  do{
      ttEnd = time(NULL);
    }while(difftime(ttEnd,ttStart)<5);

  printf(" Done!\n\n");

  printf(" Press Enter to quit ...");
  fgetc(stdin);

  return 0;
}

 

Για περισσότερες πληροφορίες σχετικά με την time_t αλλά και την clock_t (για μεγαλύτερη ακρίβεια) κάνε μια αναζήτηση στο φόρουμ με "time_t" καθώς υπάρχουν αρκετά παλαιότερα θέματα επ' αυτού.

 

Καλή συνέχεια!

Δημοσ.

DirectX εχς την εντύπωση οτι ο κώδικας σου, δεν αναστέλλει την εκτέτελση του προγράμματος, αλλά την συνεχίζει και μάλιστα με ενα ατέρμονο loop που για πέντε δευτερόλεπτα θα εξαντλήσει τα CPU resources.

Δημοσ.

Φυσικά! :mrgreen:

 

Αυτό είναι το Penalty σε αυτές τις περιπτώσεις, απλά είναι ένα παράδειγμα για wait σε C -τίποτε το ιδιαίτερο- αν δεν έχουμε σαφώς καλύτερες "O.S. multitasking friendly functions" :D.

 

Διαφορετικά αν γράφουμε πχ. κάτω από MS-Windows, τότε για παράδειγμα η Sleep είναι μια καλή και εύκολη λύση αφού τοποθετεί σε passive (suspended) κατάσταση το Process Thread μας , αλλά αν δεν υπάρχει κάτι ανάλογο τότε και αυτό είναι μια κάποια - ενεργοβόρα - λύση :(

 

Σε άλλες περιπτώσεις μπορεί να αξίζει η χρήση Timers κτλ.. πάντως σίγουρα θα πρέπει να αποφεύγουμε όσο μπορούμε τέτοια loops και ειδικά σε multitasking περιβάλλοντα -τώρα αν δεν μπορούμε τουλάχιστον ας τα κάνουμε Threads και ας πειραματιστούμε με Thread Priorities ώστε αν μπορούμε, να σώσουμε κάτι δίχως να πλήξουμε το Primery Message Loop της βασικής Process Thread μας (αυτά για MS-Windows).

Δημοσ.

αυτη η @@@@ το dev-c++ μου σπαει τα νευρα!

 

μπορει καποιος να μου εξηγησει γιατι πεταει αυτο

sleep undeclared μπλαμπλαμπλα
με τον παρακατω κωδικα?

>#include <stdio.h>
#include <windows.h>

main(void)
{
         printf("πρωτο μηνυμα!");
         sleep(50);
         printf("nhfewoif");
         }

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...