🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #6969

Re: Estructura STAT y dirent

#6969
From: J.A. Gutierrez
Date: Tue, 15 Apr 2003 07:57
60 lines
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-mail
References: <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))