Mihai Sprinceana
Un forum de programare cu de toate. Va astept sa va inscrieti si sa deveniti moderatori. Oricine este binevenit aici sa se inscrie si sa aiba acces la informatie free! Fiecare este liber sa adauge proiecte programe free etc. Ajutati acest forum sa devina o comunitate puternica unde fiecare invata de la fiecare! Tot ce trebuie sa faceti este sa va inregistrati si fiecare contributie se poate dovedi utila in timp! Forumul este free informatia free dk aveti timp liber ajutati si pe ceilalti si invatati si voi in acelasi timp! Haideti sa facem ceva pt.a ne ajuta intre noi!
Cititi regulament postare forum inainte de a posta!
|
Lista Forumurilor Pe Tematici
|
Mihai Sprinceana | Inregistrare | Login
POZE MIHAI SPRINCEANA
Nu sunteti logat.
|
Nou pe simpatie: pissy_kitty 24 ani
| Femeie 24 ani Sibiu cauta Barbat 24 - 48 ani |
|
cr3us
Moderator
Inregistrat: acum 16 ani
Postari: 160
|
|
creat- deschide si creaza un fisier
Pentru aceasta avem nevoie de urmatoarele fisiere header(biblioteca) :
#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>
Structura generala:
int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); int creat(const char *pathname, mode_t mode);
Apelul de sistem open() este folosit pt. a convertim un nume de cale intr-un descriptor de fisier. Cand apelul a reusit fisierul descriptor intors va fi cel mai mic fisier descriptor care nu este deschis pt.proces. Acest apel creeaza un nou fisier nepartajat cu alte procese (dar poate fi partajat in cazul apelului fork() )
Flag-uri folosite:
O_RDONLY -deschide fisierul doar pt.citire
O_WRONLY - deschide fisierul doar pt.scriere
O_RDWR - deschide fisierul pt.citire si scriere
O_CREAT -daca fisierul nu exista va fi creat. Proprietarul (user ID) al fisierului este setat la user id al procesului. (group id similar) O_EXCL -cand este folosit cu O_CREAT, daca fisierul exista deja este o eroare si deschiderea fisierului va esua.
O_TRUNC If the file already exists and is a regular file and the open mode allows writing (i.e., is O_RDWR or O_WRONLY) it will be truncated to length 0. If the file is a FIFO or terminal device file, the O_TRUNC flag is ignored. Otherwise the effect of O_TRUNC is unspecified. O_APPEND -fisierul este deschis in modul append, pointer-ul fisierului este pozitionat la sfarsitul fisierului cu lseek O_NONBLOCK or O_NDELAY -cand este posibil fisierul este deschis in modul non-blocking O_SYNC -fisierul este deschis pt.sincronizre I/O. Orice scriere a fisierului descriptor rezultat va duce la blocarea fisierului apelat pana cand datele nu au fost scrise fizic pe hardware.
O_NOFOLLOW -daca numele caii este un link simbolic - deschidere esuata fisier! O_DIRECTORY -daca numele caii nu este un director - deschidere esuata fisier
Constante simbolice:
The following symbolic constants are provided for mode:
S_IRWXU 00700 user (file owner) has read, write and execute permission S_IRUSR (S_IREAD) 00400 user has read permission S_IWUSR (S_IWRITE) 00200 user has write permission S_IXUSR (S_IEXEC) 00100 user has execute permission S_IRWXG 00070 group has read, write and execute permission S_IRGRP 00040 group has read permission S_IWGRP 00020 group has write permission S_IXGRP 00010 group has execute permission S_IRWXO 00007 others have read, write and execute permission S_IROTH 00004 others have read permission S_IWOTH 00002 others have write permisson S_IXOTH 00001 others have execute permission
RETURN VALUE open and creat return the new file descriptor, or -1 if an error occurred (in which case, errno is set appropriately). Note that open can open device special files, but creat cannot create them - use mknod(2) instead.
On NFS file systems with UID mapping enabled, open may return a file descriptor but e.g. read(2) requests are denied with EACCES. This is because the client performs open by checking the permissions, but UID mapping is performed by the server upon read and write requests.
If the file is newly created, its atime, ctime, mtime fields are set to the current time, and so are the ctime and mtime fields of the parent directory. Otherwise, if the file is modified because of the O_TRUNC flag, its ctime and mtime fields are set to the current time.
ERRORS
EEXIST -numele caii exista deja si O_CREAT si O_EXCL au fost folosite EISDIR - numele caii se refera la un director si accesul cerut implica scrierea (sunt setate fie O_WRONLY fie O_RDWR) EACCES -accesul cerut catre fisier nu este permis sau unul din directoare din cale nu permite permisiunea de cautare(executie) sau fisierul nu exista inca si accesul de a scrie in directorul parinte nu este permis
ENAMETOOLONG -numele caii este prea lung
ENOENT - O_CREAT nu este setat iar numele fisierului nu exista. ENOTDIR -o componenta folosita ca un director in numele caii nu este de fapt un director sau O_DIRECTORY a fost specificat si in plus numele caii nu este un director ENXIO - O_NONBLOCK | O_WRONLY este setat , fisierul numit este FIFO si nici un proces nu are fisiere deschise pt.citire.
ENODEV - avem un fisier special (fisier device) si nu corespunde cu nici un device care sa existe. (bug al nucleului Sistemului de Operare Linux; ENXIO va fi intors in aceasta situatie)
EROFS -numele caii se refera la un fisier de pe un sistem de fisiere read-only si a fost cerut accesul la scriere ETXTBSY - numele caii se refera la o imagine executabila care se afla in executie deja si la care a fost cerut accesul la scriere EFAULT - numele caii se afla in afara spatiului de adresa accesibil
ENOMEM -memorie insuficienta pt.nucleul SO
EMFILE -procesul are deja deschise nr.maxim de fisiere
ENFILE -limita nr.de fisiere deschise pe sistem a fost atinsa
_______________________________________ Cr3u$
|
|
pus acum 15 ani |
|