2009-08-28 7 views
2

Est-ce que quelqu'un peut-être une bonne source où toutes les opérations de fichiers disponibles comme fopen, fread, mkdir, etc sont décrites? Quand je googleing pour des opérations de dossier de Linux la plupart des pages m'expliquent comment la hiérarchie de système de fichiers ressemble.Linux: Support des opérations de fichiers

+0

appel linux ou unix système est différent de la fonction Stio. Qu'est-ce que vous cherchez?ouvrir, fermer, dissocier, écrire etc ... ou fopen, fwrite, fread etc ...? – shodanex

Répondre

1

Oui - utilisez les pages de manuel. man fopen, man fread, man mkdir, etc., décrira l'utilisation de ces fonctions. De nombreuses pages man ont aussi une section "Voir aussi" qui vous dirigera vers les pages man de fonctions connexes, un peu comme un Wikipédia primitif. :)

+0

Merci, mais je voudrais avoir une vue d'ensemble sur toutes les fonctions existantes du système de fichiers Linux comme fopen, fread, mkdir, chown etc –

3

Je ne sais pas si cela aide, mais cela est directement de la source du noyau:

struct file_operations { 
    struct module *owner; 
    loff_t (*llseek) (struct file *, loff_t, int); 
    ssize_t (*read) (struct file *, char *, size_t, loff_t *); 
    ssize_t (*write) (struct file *, const char *, size_t, loff_t *); 
    int (*readdir) (struct file *, void *, filldir_t); 
    unsigned int (*poll) (struct file *, struct poll_table_struct *); 
    int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long); 
    int (*mmap) (struct file *, struct vm_area_struct *); 
    int (*open) (struct inode *, struct file *); 
    int (*flush) (struct file *); 
    int (*release) (struct inode *, struct file *); 
    int (*fsync) (struct file *, struct dentry *, int datasync); 
    int (*fasync) (int, struct file *, int); 
    int (*lock) (struct file *, int, struct file_lock *); 
    ssize_t (*readv) (struct file *, const struct iovec *, unsigned long, loff_t *); 
    ssize_t (*writev) (struct file *, const struct iovec *, unsigned long, loff_t *); 
    ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); 
    unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); 
}; 

généralement tous les systèmes de fichiers registre leurs mises en œuvre à ces callbacks.

+1

Cela semble très intéressant, merci pour cela! –

+2

Ceux-ci sont de niveau inférieur que vous voudrez souvent. Certaines de ces fonctions ne semblent pas accessibles depuis l'utilisateur, et en tant que développeur d'utilisateur, vous utiliserez souvent des fonctions comme fopen et fread qui sont implémentées dans libc plutôt que dans le noyau. –

+0

Oui, probablement un peu emporté. Mais au moins, il contribue à la réponse dans une certaine mesure :) –

5

Les fonctions que vous demandez au sujet en fait tomber dans plusieurs catégories - flux de fichiers I/O (fopen, fread, etc.), le descripteur de fichier de niveau inférieur E/S (open, read, etc.), et le système de fichiers/manipulation de répertoire (chown, mkdir, etc.).

Pour un aperçu des fonctions d'E/S du flux de fichiers, voir man stdio.

Pour effectuer une recherche sur Google, essayez "posix file api" au lieu de "opérations de fichier linux".

Vous pouvez également consulter le GNU C Libary Manual:

+0

+1 pour le conseil sur 'man stdio', que je ne connaissais pas. – mipadi

+0

ni moi-même. –

0

utilisation man 2 open et man 2 mkdir. au bas de ces pages man sont le nom de la commande associée.

Alternativement, si vous recherchez une version browseable de ces pages de manuel, vous pouvez essayer here

1

Il a plusieurs API d'opérations de fichiers sur différents niveaux de la pile, par exemple POSIX API, Standard C AP I, Linux VFS API (comme Jeremy mentionné), et le FUSE API. Toutes les API font plus ou moins la même chose, mais les détails sont très différents.

Ces deux API sont les plus importantes pour l'utilisateur normal.

Un bon livre sur le sujet est "Advanced Programming in the UNIX Environment" par Stevens et Rago

Questions connexes