Διαφάνειες παρουσίασης #9
description
Transcript of Διαφάνειες παρουσίασης #9
![Page 1: Διαφάνειες παρουσίασης #9](https://reader036.fdocument.org/reader036/viewer/2022083006/56813c8a550346895da62c0d/html5/thumbnails/1.jpg)
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
[email protected]Διδάσκων: Νίκος Παπασπύρου
http://www.softlab.ntua.gr/~nickie/TUC/log201/
1Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Διαφάνειες παρουσίασης #9
Διαχείριση αρχείων στην ANSI CΔιαχείριση αρχείων στο UnixΡοές δεδομένων εισόδου / εξόδου στη C++
![Page 2: Διαφάνειες παρουσίασης #9](https://reader036.fdocument.org/reader036/viewer/2022083006/56813c8a550346895da62c0d/html5/thumbnails/2.jpg)
2Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Διαχείριση αρχείων στην ANSI C (i)
Βασικός τύπος <stdio.h>
FILE * fp; δείκτης σε αρχείο
Άνοιγμα & κλείσιμο αρχείωνFILE * fopen (const char * name, const char * mode);
FILE * freopen (const char * name, const char * mode, FILE * oldf);
FILE * fdopen (int fd, const char * mode);
int fclose (FILE * fp);
int fflush (FILE * fp);
![Page 3: Διαφάνειες παρουσίασης #9](https://reader036.fdocument.org/reader036/viewer/2022083006/56813c8a550346895da62c0d/html5/thumbnails/3.jpg)
3Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Διαχείριση αρχείων στην ANSI C (ii)
Ανάγνωση & εγγραφήint fputc (int c, FILE * fp);
int fgetc (FILE * fp);
int fputs (const char * s, FILE * fp);
char * fgets (char * s, int n, FILE * fp);
int fprintf (FILE * fp, const char * format, ...);
int fscanf (FILE * fp, const char * format, ...);
![Page 4: Διαφάνειες παρουσίασης #9](https://reader036.fdocument.org/reader036/viewer/2022083006/56813c8a550346895da62c0d/html5/thumbnails/4.jpg)
4Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Διαχείριση αρχείων στην ANSI C (iii)
Ανάγνωση & εγγραφή δυαδικών δεδομένωνsize_t fwrite (const void * p,size_t size, size_t num, FILE * fp);
size_t fread (void * p,size_t size, size_t num, FILE * fp);
Τέλος αρχείουint feof (FILE * fp);
Τυχαία προσπέλαση αρχείωνint fseek (FILE * fp, long offset,int origin);
long ftell (FILE * fp);
![Page 5: Διαφάνειες παρουσίασης #9](https://reader036.fdocument.org/reader036/viewer/2022083006/56813c8a550346895da62c0d/html5/thumbnails/5.jpg)
5Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Διαχείριση αρχείων στο Unix (i)
Βασικός τύπος<io.h>
int fd; περιγραφή αρχείου (file
descriptor)
Άνοιγμα αρχείων <fcntl.h>
int open (const char * name, int mode, ...);
int creat (const char * name, int mode);
Κλείσιμο αρχείων <unistd.h>
int close (int fd);
![Page 6: Διαφάνειες παρουσίασης #9](https://reader036.fdocument.org/reader036/viewer/2022083006/56813c8a550346895da62c0d/html5/thumbnails/6.jpg)
6Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Διαχείριση αρχείων στο Unix (ii)
Ανάγνωση & εγγραφή <unistd.h>ssize_t write (int fd, const void * p, size_t size);
ssize_t read (int fd, void * p, size_t size);
Τυχαία προσπέλαση αρχείων <unistd.h>off_t lseek (int fd, off_t pos,int whence);
Σκληροί σύνδεσμοι <unistd.h>int link (const char * cur_name, const char * new_name);
int unlink (const char * cur_name);
![Page 7: Διαφάνειες παρουσίασης #9](https://reader036.fdocument.org/reader036/viewer/2022083006/56813c8a550346895da62c0d/html5/thumbnails/7.jpg)
7Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Διαχείριση αρχείων στο Unix (iii)
Στοιχεία αρχείων <unistd.h>
int stat (const char * name, struct stat * s);
int fstat (int fd, struct stat * s);
Στοιχεία που μπορούν να διαβαστούν Χρήστης και ομάδα Τύπος αρχείου και δικαιώματα πρόσβασης Φυσική θέση στο σύστημα αρχείων Μέγεθος αρχείου Αριθμός σκληρών συνδέσμων Χρόνος τελευταίας αλλαγής ή πρόσβασης
![Page 8: Διαφάνειες παρουσίασης #9](https://reader036.fdocument.org/reader036/viewer/2022083006/56813c8a550346895da62c0d/html5/thumbnails/8.jpg)
8Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Διαχείριση αρχείων στο Unix (iv)
Δικαιώματα πρόσβασης <unistd.h>
int access (const char * name, int flag);
int chmod (const char * name, mode_t flag);
int fchmod (int fd, mode_t flag);
Χρήστης και ομάδα <unistd.h>
int chown (const char * name, uid_t uid, gid_t gid);
int fchown (int fd, uid_t uid, gid_t gid);
![Page 9: Διαφάνειες παρουσίασης #9](https://reader036.fdocument.org/reader036/viewer/2022083006/56813c8a550346895da62c0d/html5/thumbnails/9.jpg)
9Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Διαχείριση αρχείων στο Unix (v)
Συμβολικοί σύνδεσμοι<unistd.h>
int symlink (const char * cur_name, const char * new_name);
int readlink (const char * cur_name, char * buf, int size);
Δημιουργία καταλόγων<unistd.h>
int mkdir (const char * name, mode_t mode);
![Page 10: Διαφάνειες παρουσίασης #9](https://reader036.fdocument.org/reader036/viewer/2022083006/56813c8a550346895da62c0d/html5/thumbnails/10.jpg)
10Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Διαχείριση αρχείων στο Unix (vi)
Διαχείριση καταλόγων<dirent.h>
DIR * opendir (const char * name);
int closedir (DIR * dir);
struct dirent * readdir (DIR * dir);
Παράδειγμα: υλοποίηση εντολής ls
DIR * dir = opendir ("/home/nickie");struct dirent * dp;
while ((dp = readdir (dir)) != NULL) printf("%s\n", dp->name);closedir(dir);
![Page 11: Διαφάνειες παρουσίασης #9](https://reader036.fdocument.org/reader036/viewer/2022083006/56813c8a550346895da62c0d/html5/thumbnails/11.jpg)
11Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Ροές δεδομένων στη C++ (i)
Οι λειτουργίες εισόδου / εξόδου στη C++ υλοποιούνται από κλάσεις της βιβλιοθήκης
Αρχείο επικεφαλίδων <iostream.h> Βασικοί τελεστές: >> και << Βασικές κλάσεις
Γενικές ροές εισόδου / εξόδουistream, ostream, iostream
Ροές αρχείων εισόδου / εξόδουifstream, ofstream, iofstream
Ροές εισόδου / εξόδου από συμβολοσειρέςistrstream, ostrstream, iostrstream
![Page 12: Διαφάνειες παρουσίασης #9](https://reader036.fdocument.org/reader036/viewer/2022083006/56813c8a550346895da62c0d/html5/thumbnails/12.jpg)
12Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Ροές δεδομένων στη C++ (ii)
Παράδειγμα#include <iostream.h>
int main (){ char login[10]; int code;
cout << "login: "; cin >> login; cout << "code: "; cin >> code; cout << "You gave " << login << "and " << code << endl; return 0;}
![Page 13: Διαφάνειες παρουσίασης #9](https://reader036.fdocument.org/reader036/viewer/2022083006/56813c8a550346895da62c0d/html5/thumbnails/13.jpg)
13Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Ροές εισόδου / εξόδου (i)
Προκαθορισμένες ροέςcout, cin, cerr, clog
Κλάση ostreamostream & operator << (ostream & s, T t);
ostream & put (char c);
ostream & write (const char * buf, int size);
ostream & flush ();
![Page 14: Διαφάνειες παρουσίασης #9](https://reader036.fdocument.org/reader036/viewer/2022083006/56813c8a550346895da62c0d/html5/thumbnails/14.jpg)
14Νίκος Παπασπύρου ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ
Ροές εισόδου / εξόδου (ii)
Κλάση istreamistream & operator >> (ostream & s, T & t);
istream & get (char & c);
int get ();
istream & read (char * buf, int size);
istream & getline (char * buf, int size, char delim = '\n');
int peek ();
istream & putback (char c);