web-dev-qa-db-fra.com

Différence entre lstat fstat et stat en C

Je rédige un devoir scolaire en C pour rechercher dans un système de fichiers des répertoires, des fichiers réguliers et des liens symboliques. Pour l'instant, j'utilise lstat pour obtenir des informations sur les articles.

Quelle est donc la différence entre les appels système lstatfstat et stat?

22
uzr

Je cherchais également stat vs lstat vs fstat Et bien qu'il y ait déjà une réponse à cette question, j'aimerais le voir formaté comme ça:

lstat() est identique à stat(), sauf que si le chemin d'accès est un lien symbolique, il renvoie des informations sur le lien lui-même, pas sur le fichier auquel il se réfère.

fstat() est identique à stat(), sauf que le fichier sur lequel les informations doivent être récupérées est spécifié par le descripteur de fichier fd.

http://man7.org/linux/man-pages/man2/stat.2.html

62
user619271

Similitude: ils prennent tous les deux le nom de fichier comme arguments.

Différence: chaque fois que le nom de fichier est un lien symbolique, stat () renvoie les attributs ou les informations d'inode sur le fichier cible associé au lien. Alors que lstat () retourne uniquement les attributs du lien.

Reportez-vous à la page de manuel pour stat () vs lstat ().

2
bharat nc

googler les éléments suivants: lstat v fstat v stat

le premier lien fourni est une page de manuel qui décrit ces différences: http://manpages.ubuntu.com/manpages/hardy/man2/stat.2.html

listée sur la page est la réponse simple suivante: stat () stats le fichier pointé par path et remplit buf. lstat () est identique à stat (), sauf que si path est un lien symbolique, alors le lien lui-même est stat-ed, pas le fichier auquel il se réfère. fstat () est identique à stat (), sauf que le fichier à statuer est spécifié par le descripteur de fichier fd.

1
Bryan S.