Article View: es.comp.os.linux.programacion
Article #6969Re: Estructura STAT y dirent
From: J.A. Gutierrez
Date: Tue, 15 Apr 2003 07:57
Date: Tue, 15 Apr 2003 07:57
60 lines
3400 bytes
3400 bytes
neo <whoisneo@wanadoo.es> wrote:
: no me referia basicamente a eso.. lo que me refiero es si al hacer un stat
: sobre un directorio es posible determinar el numero de subdirectorios que
: posee ese directorio.
hmmmmmmmmm
veamos: la estructura stat de un directorio no contiene
explicitamente esa informacion.
Ahora bien, cuando creas un directorio vacio, ese directorio
tendra dos hard links correspondientes al mismo i-nodo.
Por una parte tendremos '.' y por otra el nombre del directorio
Ejemplo:
$ cd /tmp
$ mkdir foo
$ cd foo
$ ls -alid . ../foo
1890964 drwxr-xr-x 2 xxx xxxxx 9 Apr 15 09:49 .
1890964 drwxr-xr-x 2 xxx xxxxx 9 Apr 15 09:49 ../foo
$ stat .
.:
inode 1890964; dev 33554448; links 2; size 9
^^^^^^^
Si creamos un fichero dentro de este directorio, el numero de
links, evidentemente no variara:
$ touch bar
$ stat . | grep links
inode 1890964; dev 33554448; links 2; size 21
En cambio, si creamos un directorio, ese directorio contendra
una entrada ".." que evidentemente sera el mismo i-nodo:
$ mkdir foobar
$ ls -alid . ../foo foobar/..
1890964 drwxr-xr-x 3 xxx xxxxx 36 Apr 15 09:52 .
1890964 drwxr-xr-x 3 xxx xxxxx 36 Apr 15 09:52 ../foo
1890964 drwxr-xr-x 3 xxx xxxxx 36 Apr 15 09:52 foobar/..
$ stat . | grep links
inode 1890964; dev 33554448; links 3; size 36
Asi pues la respuesta a tu pregunta es que si, basta con
tomar el numero de hard links y restarle dos para saber el
numero de subdirectorios que contiene un directorio.
Nota: Algunos Unix permiten la creacion de hard links a directorios.
En esos Unix (Linux no esta entre ellos), esta solucion no te
serviria...
--
finger spd@shiva.cps.unizar.es for PGP /
.mailcap tip of the day: / La vida es una carcel
application/ms-tnef; cat '%s' > /dev/null / con las puertas abiertas
text/x-vcard; cat '%s' > /dev/null / (A. Calamaro)
Technical Details
Message-ID:
<b7ge0m$if6$1@localhost.escomposlinux.org>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!nntp.cs.ubc.ca!nntp-relay.ihug.net!ihug.co.nz!west.cox.net!cox.net!news-hub.cableinet.net!blueyonder!marmolejo.escomposlinux.org!not-for-mailReferences:
<Lquma.1073$QK6.104510@news-reader.eresmas.com> <b7e518$t86$1@localhost.escomposlinux.org> <DxBma.1102$QK6.107424@news-reader.eresmas.com>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII-7-bit
X-Google-Thread: f86c8,6a41502686e2990
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2003-04-15 00:57:12 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!nntp.cs.ubc.ca!nntp-relay.ihug.net!ihug.co.nz!west.cox.net!cox.net!news-hub.cableinet.net!blueyonder!marmolejo.escomposlinux.org!not-for-mail
From: "J.A. Gutierrez" <spd@daphne.cps.unizar.es>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: Estructura STAT y dirent
Date: Tue, 15 Apr 2003 07:57:10 +0000 (UTC)
Organization: Rank
Lines: 60
Sender: "J.A. Gutierrez" <spd@shiva.cps.unizar.es>
Message-ID: <b7ge0m$if6$1@localhost.escomposlinux.org>
References: <Lquma.1073$QK6.104510@news-reader.eresmas.com> <b7e518$t86$1@localhost.escomposlinux.org> <DxBma.1102$QK6.107424@news-reader.eresmas.com>
NNTP-Posting-Host: shiva.cps.unizar.es
X-Trace: localhost.escomposlinux.org 1050393430 18918 155.210.152.10 (15 Apr 2003 07:57:10 GMT)
X-Complaints-To: newsmaster@marmolejo.escomposlinux.org
NNTP-Posting-Date: Tue, 15 Apr 2003 07:57:10 +0000 (UTC)
User-Agent: tin/1.4.7-20030322 ("Suggestions") (UNIX) (IRIX64/6.2 (IP19))