Pascal / BaseUnix / fpSelect
FpAccess, FpAlarm, FpChdir, FpChmod, FpChown, FpClose, FpClosedir, FpDup, FpDup2, FpExecv, FpExecve, FpExit, FpFcntl, pfdfillset, fpFD_CLR, fpFD_ISSET, fpFD_SET, fpFD_ZERO, FpFork, FPFStat, FpFtruncate, FpGetcwd, FpGetegid, FpGetEnv, fpgeterrno, FpGeteuid, FpGetgid, FpGetgroups, FpGetpgrp, FpGetpid, FpGetppid, fpGetPriority, FpGetuid, FpIOCtl, FpKill, FpLink, FpLseek, fpLstat, FpMkdir, FpMkfifo, Fpmmap, Fpmunmap, FpNanoSleep, fpNice, FpOpen, FpOpendir, FpPause, FpPipe, FpRead, FpReaddir, fpReadLink, FpRename, FpRmdir, » fpSelect, fpseterrno, FpSetgid, fpSetPriority, FpSetsid, fpsettimeofday, FpSetuid,
Funcion: fpSelect()
Sintaxis:
Descripcion: FpSelect revisa uno de los archivos apuntadores en el FDSets para ver si el estado es cambiado.
readfds, writefds y exceptfds son apuntadores a arreglos de 256 bits. Si tu quieres un archivo apuntador para ser cambiado, tu puedes definir el elemento correspondiente en el arreglo a uno. Los otros elementos en el arreglo deberán ser definidos a cero. Tres arreglos son pasados: Las entradas en readfds son revisadas para ver si los caracteres esta disponibles para la lectura. Las entradas en writefds son revisadas para ver si estas esta correctas para escribir sobre ellas, mientras las entradas en exceptfds son revisadas para ver si la excepción ocurre sobre ellas.
Tu pues usar las funciones fpFD_ZERO, fpFD_Clr, fpFD_Set o fpFD_IsSet para manipular el elemento individual una definición.
El apuntador puede ser Nil.
N es el mas grande indice de entradas diferentes de cero. (La mas grande apuntador de archivos +1).
TimeOut puede ser usado para definir el tiempo limite. Si TimeOut puede ser de dos tipos:
1.- TimeOut es de tipo ptimeval y contiene un tiempo cero, la llamada regresa inmediatamente. Si TimeOut es Nil, el kernel esperara siempre, o hasta que el stado cambio.
2.- TimeOut Es de tipo Cint. Si este es -1, este ha tenido el efecto como TimeOut de tipo PTime el cual es Nil. De lo contrario, TimeOut contiene un tiempo en milisegundos.
Cuando el TimeOut es alcanzado, o uno de los archivos apuntadores ha cambiado, la llamada seleccionada regresa. Cuando regresa, esta tendrá modificadas las entradas en el arreglo el cual tiene actualmente cambiado, y esta regresa el numero de entradas que han sido cambiadas. Si el timeout ha sido alcanzado, y no cambiaron archivos apuntadores, la función retorna cero; Los arreglos de los ÃÂÂndices son indefinidos después. Cuando ocurre un error, la función retorna -1.
La variante con el siguiente archivo sera ejecutada la llamada FpSelect sobre el archivo apuntador asociado con el siguiente archivo T
ERRORES:
Cuando ocurre un error, la función retorna -1. Mas información puede ser obtenida usando la función fpGetErrno
SYS_EBADF
Un apuntador invalido ha sido definido.
SYS_EINTR
una señal no bloqueada ha sido tomada
SYS_EINVAL
N no es negativa o es demasiado grande
SYS_ENOMEM
Select se ha podido hacer a asignar memoria para esta tabla interna
Vea también:
FpFD_ZERO, fpFD_Clr, fpFD_Set, fpFD_IsSet
Ejemplo:
Sintaxis:
function FPSelect( N: cInt; readfds: pFDSet; writefds: pFDSet; exceptfds: pFDSet
Descripcion: FpSelect revisa uno de los archivos apuntadores en el FDSets para ver si el estado es cambiado.
readfds, writefds y exceptfds son apuntadores a arreglos de 256 bits. Si tu quieres un archivo apuntador para ser cambiado, tu puedes definir el elemento correspondiente en el arreglo a uno. Los otros elementos en el arreglo deberán ser definidos a cero. Tres arreglos son pasados: Las entradas en readfds son revisadas para ver si los caracteres esta disponibles para la lectura. Las entradas en writefds son revisadas para ver si estas esta correctas para escribir sobre ellas, mientras las entradas en exceptfds son revisadas para ver si la excepción ocurre sobre ellas.
Tu pues usar las funciones fpFD_ZERO, fpFD_Clr, fpFD_Set o fpFD_IsSet para manipular el elemento individual una definición.
El apuntador puede ser Nil.
N es el mas grande indice de entradas diferentes de cero. (La mas grande apuntador de archivos +1).
TimeOut puede ser usado para definir el tiempo limite. Si TimeOut puede ser de dos tipos:
1.- TimeOut es de tipo ptimeval y contiene un tiempo cero, la llamada regresa inmediatamente. Si TimeOut es Nil, el kernel esperara siempre, o hasta que el stado cambio.
2.- TimeOut Es de tipo Cint. Si este es -1, este ha tenido el efecto como TimeOut de tipo PTime el cual es Nil. De lo contrario, TimeOut contiene un tiempo en milisegundos.
Cuando el TimeOut es alcanzado, o uno de los archivos apuntadores ha cambiado, la llamada seleccionada regresa. Cuando regresa, esta tendrá modificadas las entradas en el arreglo el cual tiene actualmente cambiado, y esta regresa el numero de entradas que han sido cambiadas. Si el timeout ha sido alcanzado, y no cambiaron archivos apuntadores, la función retorna cero; Los arreglos de los ÃÂÂndices son indefinidos después. Cuando ocurre un error, la función retorna -1.
La variante con el siguiente archivo sera ejecutada la llamada FpSelect sobre el archivo apuntador asociado con el siguiente archivo T
ERRORES:
Cuando ocurre un error, la función retorna -1. Mas información puede ser obtenida usando la función fpGetErrno
SYS_EBADF
Un apuntador invalido ha sido definido.
SYS_EINTR
una señal no bloqueada ha sido tomada
SYS_EINVAL
N no es negativa o es demasiado grande
SYS_ENOMEM
Select se ha podido hacer a asignar memoria para esta tabla interna
Vea también:
FpFD_ZERO, fpFD_Clr, fpFD_Set, fpFD_IsSet
Ejemplo:
Program Example33; { Program to demonstrate the Select function. } Uses BaseUnix; Var FDS : Tfdset; begin fpfd_zero(FDS); fpfd_set(0,FDS); Writeln ('Press the <ENTER> to continue the program.'); { Wait until File descriptor 0 (=Input) changes } fpSelect (1,@FDS,nil,nil,nil); { Get rid of <ENTER> in buffer } readln; Writeln ('Press <ENTER> key in less than 2 seconds...'); Fpfd_zero(FDS); FpFd_set (0,FDS); if fpSelect (1,@FDS,nil,nil,2000)>0 then Writeln ('Thank you !') { FD_ISSET(0,FDS) would be true here. } else Writeln ('Too late !'); end.
Librerias Pascal
Libreria crt - CRT - Pantalla y teclado del PASCAL de Turbo que maneja la unidadLibreria dos - DOS - Interface Turbo Pascal MS-DOS
Libreria Graph - Unidad para manipular los graficos de la pantalla compatible con TP
Libreria Objects - Objetos basicos compatible con TP
Libreria math - Rutinas adicionales matematicas
Libreria Printer - Provee de acceso a la impresora
Libreria strings - Rutinas para el manejo de cadenas
Libreria BaseUnix - Funcionalidad Basica de Linux
Libreria System - Manejo de Archivos - Funciones para la manipulacion de archivos en Pascal