🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Distinguir descriptor

#10862
From: Lokutus
Date: Sun, 27 Jan 2002 18:47
86 lines
3646 bytes
Ignacio Arenaza wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
>>>>>> "Lokutus" == Lokutus  <Lokutus2000@nclack.mar> writes:
> 
>     Lokutus>    /* Paso numero 1, determinar si stdin, se corresponde
>     Lokutus> con un socket o con la consola.*/
> 
> Peque�o detalle.... stdin es el descriptor numero 0, no el 1. El 1 es
> stdout ;-)
> 

    Si, he estado probando con el 0, 1 y 2, que en teor�a, deber�an ser los 
tres un socket duplicado con dup() dentro de inetd, (o xinetd) o telnetd.

    Pero en la pr�ctica parece ser que no es as�:


    Este bloque de c�digo

� � �dato = tInfo.st_mode & S_IFMT;
� � �switch(dato) {
� � � �case S_IFSOCK:
� � � � � printf("socket.\n");
� � � � � break;
� � � �case S_IFREG:
� � � � � printf("fich regular.\n");
� � � � � break;
� � � �case S_IFBLK:
� � � � � printf("fich bloques.\n");
� � � � � break;
� � � �case S_IFCHR:
� � � � � printf("fich caracter.\n");
� � � � � break;
� � � �default:
� � � � � printf("ptrp tipo \n");
� � � � � break;

� � � �}


   Siempre imprime "fich caracter.", y probando a hacer esto:

� � � struct sockaddr tDir;
� � � int iLong;


� � �iLong = sizeof(tDir);
� � �if (getpeername(fileno(stdin), &tDir, &iLong) < 0) {
� � � � perror("lld");

   Me dice que "naranjas de la china"


       lld: Socket operation on non-socket


    Lo �nico que medio me puede valer, es recuperar el nombre del fichero, 
si me conecto desde la consola, es de tipo "/dev/vc/1", "/dev/vc/2", etc, 
pero si lo hago a traves de una conexi�n es "/dev/pts/1", "/dev/pts/2", 
aunque eso tambi�n incluir�a las sesiones X Window.

    Pero si hago un "who", el muy cachondo si me lo detecta.

   Lokutus �vc/1 � � Jan 26 16:32
   Lokutus �:0 � � � Jan 26 15:26
   Lokutus �pts/0 � �Jan 26 15:27
   Lokutus �pts/2 � �Jan 26 16:34 (localhost.localdomain)

 
   El pts/0 es desde X, y el pts/2, es haciendome un telnet a mi mismo, 
por lo que el segundo paso, tiene que pasar por echar una ojeada al c�digo 
fuente de la �rden "who".

    De todas formas, tambi�n tengo que indagar, haciendome un minitroyano, 
para ver que es lo que pasa, y instalarme lld dentro de xinetd, para ver 
que es lo que pasa.

    Ya te comentar� los resultados que tengo.


-- 

     Lokutus, asimilando la red.
Technical Details
Message-ID: <a31i1r$hus$1@diana.bcn.ttd.net>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!nntp-relay.ihug.net!ihug.co.nz!out.nntp.be!propagator-SanJose!in.nntp.be!caladan.arrakis.es!newsfeed.mad.ttd.net!news.bcn.ttd.net!not-for-mail
References: <a2ptvt$pfa$1@diana.bcn.ttd.net> <877kq71hq4.fsf@eb2ebu.ampr.org> <a2srck$nq6$1@diana.bcn.ttd.net> <87wuy6ot5e.fsf@eb2ebu.ampr.org>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,4cbc2d8c4bbcdec
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2002-01-27 10:49:47 PST
From: Lokutus <Lokutus2000@nclack.mar>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: Distinguir descriptor
Date: Sun, 27 Jan 2002 19:47:09 +0100
Organization: Parque tecnológico "Nuevo Clack" - Distrito federal de Marte
Lines: 88
Message-ID: <a31i1r$hus$1@diana.bcn.ttd.net>
References: <a2ptvt$pfa$1@diana.bcn.ttd.net> <877kq71hq4.fsf@eb2ebu.ampr.org> <a2srck$nq6$1@diana.bcn.ttd.net> <87wuy6ot5e.fsf@eb2ebu.ampr.org>
Reply-To: Lokutus2000@nclack.mar
NNTP-Posting-Host: 213-99-252-236.uc.nombres.ttd.es
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8Bit
User-Agent: KNode/0.6.1
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!nntp-relay.ihug.net!ihug.co.nz!out.nntp.be!propagator-SanJose!in.nntp.be!caladan.arrakis.es!newsfeed.mad.ttd.net!news.bcn.ttd.net!not-for-mail