Article View: es.comp.os.linux.programacion
Article #10862Re: Distinguir descriptor
From: Lokutus
Date: Sun, 27 Jan 2002 18:47
Date: Sun, 27 Jan 2002 18:47
86 lines
3646 bytes
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-mailReferences:
<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