Skip to content
GrCode Club GrCode Club GrCode Club

GrCode Club

GrCode Club GrCode Club GrCode Club

GrCode Club

  • Αρχική
  • Developer
    • Πληροφορίες
    • Web Development
    • Γλώσσες προγραμματισμού
    • Docker
  • Δίκτυα Υπολογιστών
    • Βασικές Γνώσεις
    • Πρωτοκόλλα στα Δίκτυα Υπολογιστών
    • Υπηρεσίες και Ports
    • Cloud
  • Λειτουργικά Συστήματα
    • Βασικές Γνώσεις
    • Linux
    • Microsoft Windows
  • Kυβερνοασφάλεια
    • Πληροφορίες
    • Αttacks
    • Tools
  • Hardware
    • Πληροφορίες
    • Υπολογιστής
    • Οθόνες
    • Επίλυση Προβλημάτων
  • Κινητά
    • Android
    • iPhone
    • Οδηγός αγοράς Smartphone
  • Περισσότερα
    • Ο λογαριασμός μου
    • Ορολογία
    • Συντομογραφίες
    • Office Suite
  • Αρχική
  • Developer
    • Πληροφορίες
    • Web Development
    • Γλώσσες προγραμματισμού
    • Docker
  • Δίκτυα Υπολογιστών
    • Βασικές Γνώσεις
    • Πρωτοκόλλα στα Δίκτυα Υπολογιστών
    • Υπηρεσίες και Ports
    • Cloud
  • Λειτουργικά Συστήματα
    • Βασικές Γνώσεις
    • Linux
    • Microsoft Windows
  • Kυβερνοασφάλεια
    • Πληροφορίες
    • Αttacks
    • Tools
  • Hardware
    • Πληροφορίες
    • Υπολογιστής
    • Οθόνες
    • Επίλυση Προβλημάτων
  • Κινητά
    • Android
    • iPhone
    • Οδηγός αγοράς Smartphone
  • Περισσότερα
    • Ο λογαριασμός μου
    • Ορολογία
    • Συντομογραφίες
    • Office Suite
GrCode Club GrCode Club GrCode Club

GrCode Club

GrCode Club GrCode Club GrCode Club

GrCode Club

  • Αρχική
  • Developer
    • Πληροφορίες
    • Web Development
    • Γλώσσες προγραμματισμού
    • Docker
  • Δίκτυα Υπολογιστών
    • Βασικές Γνώσεις
    • Πρωτοκόλλα στα Δίκτυα Υπολογιστών
    • Υπηρεσίες και Ports
    • Cloud
  • Λειτουργικά Συστήματα
    • Βασικές Γνώσεις
    • Linux
    • Microsoft Windows
  • Kυβερνοασφάλεια
    • Πληροφορίες
    • Αttacks
    • Tools
  • Hardware
    • Πληροφορίες
    • Υπολογιστής
    • Οθόνες
    • Επίλυση Προβλημάτων
  • Κινητά
    • Android
    • iPhone
    • Οδηγός αγοράς Smartphone
  • Περισσότερα
    • Ο λογαριασμός μου
    • Ορολογία
    • Συντομογραφίες
    • Office Suite
  • Αρχική
  • Developer
    • Πληροφορίες
    • Web Development
    • Γλώσσες προγραμματισμού
    • Docker
  • Δίκτυα Υπολογιστών
    • Βασικές Γνώσεις
    • Πρωτοκόλλα στα Δίκτυα Υπολογιστών
    • Υπηρεσίες και Ports
    • Cloud
  • Λειτουργικά Συστήματα
    • Βασικές Γνώσεις
    • Linux
    • Microsoft Windows
  • Kυβερνοασφάλεια
    • Πληροφορίες
    • Αttacks
    • Tools
  • Hardware
    • Πληροφορίες
    • Υπολογιστής
    • Οθόνες
    • Επίλυση Προβλημάτων
  • Κινητά
    • Android
    • iPhone
    • Οδηγός αγοράς Smartphone
  • Περισσότερα
    • Ο λογαριασμός μου
    • Ορολογία
    • Συντομογραφίες
    • Office Suite

Δομές (Specific Structures)

Η δομή (structure) στην C επιτρέπει τη δημιουργία σύνθετων τύπων δεδομένων που μπορούν να περιέχουν πολλές μεταβλητές διαφορετικών τύπων, π.χ., ακέραιους, πραγματικούς αριθμούς, χαρακτήρες κ.λπ. Αυτό είναι χρήσιμο για την αναπαράσταση πραγματικών οντοτήτων, όπως αντικείμενα, άτομα ή αρχεία.

Stuct tm

Χρησιμοποιείται για την αναπαράσταση ημερομηνιών και ωρών.Η δομή struct tm ορίζεται στο αρχείο κεφαλίδας και έχει την εξής μορφή.

struct tm {
     int tm_sec;   // Αναπαριστά τα δευτερόλεπτα (0-59)
     int tm_min;   // Αναπαριστά τα λεπτά (0-59)
     int tm_hour;  // Αναπαριστά τις ώρες (0-23)
     int tm_mday;  // Αναπαριστά την ημέρα του μήνα (1-31)
     int tm_mon;   // Αναπαριστά τον μήνα (0-11, 0 = Ιανουάριος)
     int tm_year;  // Αναπαριστά το έτος (έτος - 1900)
     int tm_wday;  // Αναπαριστά την ημέρα της εβδομάδας(0-6, 0 = Κυριακή)
     int tm_yday;  // Αναπαριστά την ημέρα του έτους (0-365)
     int tm_isdst; // Aναπαριστά την ένδειξη θερινής ώρας
              // (1 = θερινή ώρα, 0 = μη θερινή ώρα, -1 = άγνωστο)
}; 

Stuct sockaddr

Η δομή sockaddr είναι μια βασική δομή που χρησιμοποιείται στην προγραμματιστική γλώσσα C για την προγραμματισμό των sockets. Ορίζεται στο αρχείο κεφαλίδας και χρησιμοποιείται για να αναπαραστήσει μια γενική διεύθυνση socket. Η δομή struct sockaddr είναι :

  • sa_family: καθορίζει την οικογένεια της διεύθυνσης, που καθορίζει τη μορφή των δεδομένων της διεύθυνσης
  • sa_data: είναι ένας πίνακας που περιέχει τις πραγματικές πληροφορίες της διεύθυνσης. Το μέγεθος του πίνακα sa_data μπορεί να ποικίλει ανάλογα με την οικογένεια της διεύθυνσης που χρησιμοποιείται.
struct sockaddr {
     unsigned short sa_family;
     char sa_data[14];  
};

Stuct sockaddr_in

Η δομή sockaddr_in χρησιμοποιείται στη γλώσσα προγραμματισμού C για να αναπαραστήσει μια διεύθυνση IPv4 για τη χρήση με sockets. Η δομή struct timeval ορίζεται στο αρχείο κεφαλίδας και έχει την εξής μορφή:

  • sin_family: Η οικογένεια της διεύθυνσης, που συνήθως είναι AF_INET για IPv4.
  • sin_port: Ο αριθμός θύρας στον οποίο ο ακροατής ή ο προορισμός του socket είναι συνδεδεμένος. Πρέπει να μετατραπεί στην αναγνωριστική μορφή δικτύου (network byte order) χρησιμοποιώντας τη συνάρτηση htons().
  • sin_addr: Η διεύθυνση IPv4. Είναι μια δομή τύπου struct in_addr που περιέχει την αριθμητική αναπαράσταση της διεύθυνσης.
struct sockaddr_in {
     short sin_family;         
     unsigned short sin_port;  
     struct in_addr sin_addr;  
     char sin_zero[8];       
};

Stuct sockaddr_in6

Χρησιμοποιείται για την αναπαράσταση διευθύνσεων IPv6.
Η δομή sockaddr_in6 ορίζεται στο αρχείο κεφαλίδας #include και έχει την εξής μορφή:

  • sin6_len: Το μέγεθος της δομής sockaddr_in6 σε bytes.
  • sin6_family: Η οικογένεια της διεύθυνσης (π.χ., AF_INET6 για το IPv6).
  • sin6_port: Ο αριθμός θύρας που αντιστοιχεί στη διεύθυνση.
  • sin6_flowinfo: Πληροφορίες ροής για τη διεύθυνση.
  • sin6_addr: Δομή in6_addr που περιέχει τη διεύθυνση IPv6.
  • sin6_scope_id: Ταυτότητα πεδίου εμβέλειας που χρησιμοποιείται για την αναγνώριση της εμβέλειας της διεύθυνσης.
struct sockaddr_in6 {
     sa_family_t     sin6_family;   // Οικογένεια διεύθυνσης (IPv6)
     in_port_t       sin6_port;     // Αριθμός θύρας (σε μορφή δικτύου)
     uint32_t        sin6_flowinfo; // Πληροφορίες ροής (για την εξυπηρέτηση QoS)
     struct in6_addr sin6_addr;     // Διεύθυνση IPv6
     uint32_t        sin6_scope_id; // Αναγνωριστικό εύρους (για περιοχή εύρους)
}; 

Stuct stat

Η δομή struct stat περιέχει πληροφορίες για ένα αρχείο, όπως το αναγνωριστικό συσκευής, ο αριθμός inode, ο τύπος αρχείου και τα δικαιώματα πρόσβασης, το μέγεθος του αρχείου, ο χρήστης-κατόχος, η ομάδα-κατόχος, ο χρόνος τελευταίας πρόσβασης, ο χρόνος τελευταίας τροποποίησης και ο χρόνος τελευταίας αλλαγής των μεταδεδομένων. Οι συγκεκριμένες πληροφορίες εξαρτώνται από το λειτουργικό σύστημα και το σύστημα αρχείων που χρησιμοποιείται.

Η δομή struct stat ορίζεται στο αρχείο κεφαλίδας <sys/stat.h> και έχει την εξής μορφή:

  • st_dev: ID της συσκευής που περιέχει το αρχείο.
  • st_ino: Αριθμός inode του αρχείου.
  • st_mode: Προστασία (δικαιώματα πρόσβασης) του αρχείου.
  • st_nlink: Αριθμός συμβολικών συνδέσμων προς το αρχείο.
  • st_uid: Αναγνωριστικό χρήστη του κατόχου.
  • st_gid: Αναγνωριστικό ομάδας του κατόχου.
  • st_rdev: ID συσκευής για ειδικά αρχεία (π.χ., χαρακτήρας ή μπλοκ συσκευή).
  • st_size: Συνολικό μέγεθος του αρχείου σε bytes.
  • st_blksize: Μέγεθος μπλοκ για επικοινωνία με το αρχείο.
  • st_blocks: Αριθμός εκχωρημένων μπλοκ για το αρχείο.
  • st_atime: Χρόνος τελευταίας πρόσβασης στο αρχείο.
  • st_mtime: Χρόνος τελευταίας τροποποίησης του αρχείου.
  • st_ctime: Χρόνος τελευταίας αλλαγής κατάστασης του αρχείου.
struct stat {
     dev_t     st_dev;         // Αναγνωριστικό συσκευής
     ino_t     st_ino;         // Αριθμός inode
     mode_t    st_mode;        // Λειτουργική λειτουργία (π.χ. δικαιώματα πρόσβασης)
     nlink_t   st_nlink;       // Αριθμός συνδέσεων
     uid_t     st_uid;         // User ID του κατόχου
     gid_t     st_gid;         // Group ID του κατόχου
     dev_t     st_rdev;        // Αναγνωριστικό συσκευής για ειδικά αρχεία
     off_t     st_size;        // Μέγεθος αρχείου σε bytes
     blksize_t st_blksize;     // Μέγεθος μπλοκ διαμόρφωσης αρχείου σε bytes
     blkcnt_t  st_blocks;      // Συνολικός αριθμός μπλοκ αρχείου
     time_t    st_atime;       // Χρόνος τελευταίας πρόσβασης
     time_t    st_mtime;       // Χρόνος τελευταίας τροποποίησης
     time_t    st_ctime;       // Χρόνος τελευταίας αλλαγής δομής αρχείου
};

Stuct dirent

Οι δομές struct dirent χρησιμοποιούνται συνήθως με συναρτήσεις όπως η readdir() για την ανάγνωση των καταχωρίσιμων αρχείων ενός καταλόγου. Με τη χρήση της δομής struct dirent, μπορείτε να αποκτήσετε πρόσβαση σε πληροφορίες όπως τα ονόματα αρχείων και οι τύποι αρχείων που υπάρχουν σε έναν κατάλογο.

Η δομή struct dirent ορίζεται στο αρχείο κεφαλίδας  και έχει την εξής μορφή:

  • d_ino: Ο αριθμός inode του αρχείου.
  • d_off: Το offset (μετατόπιση) στον κατάλογο για αυτό το καταχωρίσιμο αρχείο.
  • d_reclen: Το μήκος της καταχώρισης του αρχείου.
struct dirent {
     ino_t          d_ino;     // Αριθμός inode του αρχείου
     off_t          d_off;     // Μετατόπιση για τον επόμενο καταλόγο (όχι πάντα υποστηριζόμενη)
     unsigned short d_reclen;  // Μήκος εγγραφής
     unsigned char  d_type;    // Τύπος αρχείου
     char           d_name[];  // Όνομα αρχείου
};

Stuct flock

Η δομή flock χρησιμοποιείται στην γλώσσα προγραμματισμού C για τον έλεγχο κλειδώματος αρχείων (file locking). Χρησιμοποιείται για να εφαρμοστεί κλείδωμα σε ένα αρχείο ή να ελευθερωθεί κλείδωμα που ήδη υπάρχει. Η δομή flock ορίζεται στο αρχείο κεφαλίδας .

  • l_type: Ο τύπος του κλειδώματος. Μπορεί να είναι μία από τις ακόλουθες τιμές:
    1. F_RDLCK: Κλείδωμα για ανάγνωση (shared lock).
    2. F_WRLCK: Κλείδωμα για εγγραφή (exclusive lock).
    3. F_UNLCK: Απελευθέρωση του κλειδώματος.
  • l_whence: Η αφετηρία της μετατόπισης (offset) για τον υπολογισμό των πεδίων l_start και l_len. Μπορεί να είναι μία από τις ακόλουθες τιμές:
    1. SEEK_SET: Από την αρχή του αρχείου.
    2. SEEK_CUR: Από την τρέχουσα θέση στο αρχείο.
    3. SEEK_END: Από το τέλος του αρχείου.
  • l_start: Η αρχή της περιοχής που θα κλειδωθεί (offset) από την αφετηρία.
  • l_len: Το μήκος της περιοχής που θα κλειδωθεί (length) από την αφετηρία.
  • l_pid: Το αναγνωριστικό διεργασίας (PID) που κατέχει το κλείδωμα. Αυτό το πεδίο γεμίζεται από το σύστημα όταν το κλείδωμα εφαρμόζεται.
struct flock {
     short l_type;    // Τύπος κλειδώματος (F_RDLCK, F_WRLCK, F_UNLCK)
     short l_whence;  // Αναφορά της μετατόπισης (SEEK_SET, SEEK_CUR, SEEK_END)
     off_t l_start;   // Αρχή της περιοχής προς κλείδωμα
     off_t l_len;     // Μέγεθος της περιοχής προς κλείδωμα
     pid_t l_pid;     // ID διεργασίας που κρατά το κλείδωμα (αν υπάρχει)
};

Struct sigaction

Η δομή struct sigaction είναι μια προκαθορισμένη (built-in) δομή στη γλώσσα προγραμματισμού C που χρησιμοποιείται για την καθορισμό της συμπεριφοράς ενός προγράμματος κατά τη λήψη σήματος (signal).

Η δομή struct sigaction ορίζεται στο αρχείο κεφαλίδας  και έχει την εξής μορφή:

  • sa_handler: Δείκτης σε μια συνάρτηση χειρισμού σήματος, η οποία εκτελείται όταν λαμβάνεται το σήμα. Αυτό το μέλος χρησιμοποιείται κατά κύριο λόγο για την υποστήριξη των παλαιών μορφών χειρισμού σήματος.
  • sa_sigaction: Δείκτης σε μια συνάρτηση χειρισμού σήματος με επιπλέον πληροφορίες.
  • sa_mask: Ένα σύνολο σημάτων (sigset_t) που απενεργοποιούνται προσωρινά κατά την εκτέλεση της συνάρτησης χειρισμού. Αυτό εξασφαλίζει ότι το σήμα δεν θα επαναληφθεί κατά τη διάρκεια της εκτέλεσης της συνάρτησης.
  • sa_flags: Επιπλέον σημαίες που ελέγχουν τη συμπεριφορά της διαχείρισης σήματος.
    1. SA_RESTART
    2. SA_NOCLDSTOP
    3. SA_NODEFER
    4. SA_RESETHAND
    5. SA_SIGINFO
  • sa_restorer: Δείκτης σε συνάρτηση αποκατάστασης (restorer function). Αυτό το μέλος χρησιμοποιείται κατά κύριο λόγο σε παλαιότερα συστήμα
struct sigaction {
     void (*sa_handler)(int);          // Δείκτης σε συνάρτηση χειρισμού σήματος
     void (*sa_sigaction)(int, siginfo_t *, void *);  // Δείκτης σε συνάρτηση χειρισμού σήματος με περισσότερες πληροφορίες
     sigset_t sa_mask;                  // Σήματα που εμποδίζονται κατά την εκτέλεση του χειριστή
     int sa_flags;                      // Πρόσθετες σημαίες (flags)
     void (*sa_restorer)(void);         // Ανακατασκευαστής στοιχείων αποθήκευσης στη στοίβα (deprecated)
};

Social Media

  • Facebook
  • Instagram
  • YouTube
  • TikTok
  • Discord

Email Επικοινωνίας

info@grcodeclub.gr

Πολιτική Cookies (ΕΕ)

Όροι και Προϋποθέσεις

GrCode Club by @dimitridedou
X
Γίνετε μέλος του GrCode Club Discord Server!
🚀 Join Server
GrCode Club
Διαχείριση Συγκατάθεσης
Για να παρέχουμε την καλύτερη εμπειρία, χρησιμοποιούμε τεχνολογίες όπως cookies για την αποθήκευση ή/και την πρόσβαση σε πληροφορίες συσκευών. Η συγκατάθεση για τις εν λόγω τεχνολογίες θα μας επιτρέψει να επεξεργαστούμε δεδομένα προσωπικού χαρακτήρα, όπως συμπεριφορά περιήγησης ή μοναδικά αναγνωριστικά σε αυτόν τον ιστότοπο. Η μη συγκατάθεση ή η ανάκληση της συγκατάθεσης, μπορεί να επηρεάσει αρνητικά ορισμένες λειτουργίες και δυνατότητες.
Λειτουργικά Πάντα ενεργό
Η τεχνική αποθήκευση ή πρόσβαση είναι απολύτως απαραίτητη για τον νόμιμο σκοπό της δυνατότητας χρήσης συγκεκριμένης υπηρεσίας που ζητείται ρητά από τον συνδρομητή ή τον χρήστη ή με αποκλειστικό σκοπό τη μετάδοση επικοινωνίας μέσω δικτύου ηλεκτρονικών επικοινωνιών.
Προτιμήσεις
Η τεχνική αποθήκευση ή πρόσβαση είναι απαραίτητη για τον νόμιμο σκοπό της αποθήκευσης προτιμήσεων που δεν ζητούνται από τον συνδρομητή ή τον χρήστη.
Στατιστικά
Η τεχνική αποθήκευση ή πρόσβαση που χρησιμοποιείται αποκλειστικά για στατιστικούς σκοπούς. Η τεχνική αποθήκευση ή πρόσβαση που χρησιμοποιείται αποκλειστικά για ανώνυμους στατιστικούς σκοπούς. Χωρίς κλήτευση, η εθελοντική συμμόρφωση εκ μέρους του Παρόχου Υπηρεσιών Διαδικτύου ή πρόσθετες καταγραφές από τρίτο μέρος, οι πληροφορίες που αποθηκεύονται ή ανακτώνται για το σκοπό αυτό από μόνες τους δεν μπορούν συνήθως να χρησιμοποιηθούν για την αναγνώρισή σας.
Εμπορικής Προώθησης
Η τεχνική αποθήκευση ή πρόσβαση απαιτείται για τη δημιουργία προφίλ χρηστών, για την αποστολή διαφημίσεων ή για την καταγραφή του χρήστη σε έναν ιστότοπο ή σε διάφορους ιστότοπους για παρόμοιους σκοπούς εμπορικής προώθησης.
  • Διαχείριση επιλογών
  • Διαχείριση υπηρεσιών
  • Manage {vendor_count} vendors
  • Διαβάστε περισσότερα για αυτούς τους σκοπούς
Προβολή προτιμήσεων
  • {title}
  • {title}
  • {title}