Debe introducir al menos 3 caracteres en el buscador.
Inicio / Wikis / Cursos gratis / Manual de Programación en OS/2 - El sistema de ficheros de OS/2

Manual de Programación en OS/2 - El sistema de ficheros de OS/2

 ----- 
Creative Commons Curso gratis de Supertutoriales - 24 de Agosto de 2005
Temas Relacionados: OS/2
5. El sistema de ficheros de OS/2
La parte básica de la conexión entre el hardware del ordenador y el programador se encuentra en el Sistema de Archivos. Es él quien se encarga de darnos acceso a los ficheros del disco, al teclado y a la pantalla en modo texto. La ventaja que tiene esto es que nos abstrae totalmente de las características del hardware, presentándonos todo como una ristra de caracteres.

El acceso a un fichero sigue una serie de pasos absolutamente necesarios: primero es preciso abrir el archivo, de modo que el programa obtenga control sobre él; una vez hecho esto, podemos realizar cualquier operación de lectura y/o escritura sobre él, y finalizar cerrando el archivo, de modo que lo liberamos y puede ser accedido por otro programa.

Apertura y cierre de ficheros


La primera operación necesaria antes de poder acceder a un archivo es identificarlo mediante una llamada al Sistema Operativo. A esta operación se le denomina apertura del archivo. Le enviamos como parámetros el nombre del archivo a abrir y una serie de opciones, y nos devolverá un identificador de archivo (en adelante se denominará Handle) que usaremos para referirnos a él cuando queramos leer o escribir. El identificador es simplemente un número entero. Existe una única excepción en este caso: los archivos estandar no es necesario que sean abiertos, pues ya tienen asignado un identificador (STDIN=0, STDOUT=1, STDERR=2).

Las opciones de apertura especifican la forma en que el programa va a acceder a dicho fichero. Por ejemplo, puede querer acceder solo en modo lectura, o bien puede especificar que si dicho fichero no existe, devuelva un error, o bien que lo cree. O bien, si existe, puede pedir que lo sobreescriba. Etc.

El cierre del fichero se hace al final del acceso, cuando ya no vamos a leer o escribir nada más en él. Esto permite su liberación, de modo que cualquier otro programa puede acceder a él con total libertad.



DosOpen
DosClose




Lectura y escritura de datos


Una vez que hemos abierto un fichero, podemos acceder a él. Los ficheros aparecen como un flujo de caracteres en serie, y el caracter actual está referenciado por un puntero que se incrementa automáticamente después de cada operación. Esto significa que cuando hacemos una lectura de un fichero, recibiremos el caracter siguiente al último leido. Y cada vez que escribamos un caracter, lo haremos a continuación del último escrito. Existe sin embargo la posibilidad de cambiar la posición de dicho puntero, de modo que podemos leer y escribir de forma aleatoria. Esta opción, sin embargo, solo funciona con ficheros de disco, y no con dispositivos como el teclado, pantalla, etc.



DosRead
DosWrite




Compartición de ficheros


Dado que OS/2 es un Sistema Operativo multitarea, puede ocurrir que dos (o más) programas intenten acceder a la vez a un mismo fichero de disco. Para evitar interferencias, OS/2 ofrece una serie de opciones de compartición de archivos, que se especifican en el momento de abrirlos. Estas son:

Modos de acceso al fichero
  • READ_ONLY: solo se va a leer del fichero.
  • WRITE_ONLY: solo se va a escribir en el fichero.
  • READ_WRITE: se va a leer y escribir (es el valor por omisión).

Modos de compartición
  • DENY_ALL: OS/2 rechaza cualquier petición posterior de abrir ese archivo.
  • DENY_READ: OS/2 rechaza cualquier petición de abrir ese archivo para lectura.
  • DENY_WRITE: OS/2 rechaza cualquier petición de abrir ese archivo para escritura.
  • DENY_NONE: OS/2 permite cualquier operación con ese archivo.

Los modos de compartición permiten elegir la forma en que otros programas acceden al fichero que tenemos abierto. Por ejemplo, si tenemos un programa que lee del fichero prueba.txt y lo envía a la impresora, lo lógico es que lo abra como READ_ONLY, pues no va a escribir nada en él. Por otro lado, no puede permitir que otro programa modifique el fichero, pero no le importa que pueda leerlo, por lo que como modo de acceso asigna READ_ONLY. De esta forma, si otro programa intenta acceder al mismo fichero, OS/2 solo le dará acceso si intenta acceder en modo READ_ONLY; si intenta abrirlo como WRITE_ONLY o READ_WRITE, OS/2 le devolverá un error.

Gestión de dispositivos


A través del sistema de ficheros podemos acceder también a los dispositivos físicos que forman el ordenador. Existen normalmente una serie de archivos que identifican a cada periférico y que nos permiten enviar y recibir datos hacia y desde ellos.

Los nombres de los archivos de que disponemos son:

  • COM1-COM4: maneja los puertos serie del ordenador.
  • CLOCK$: el reloj del sistema.
  • CON: gestiona la consola (en lectura es el teclado, en escritura, la pantalla).
  • SCREEN$: maneja la pantalla.
  • KBD$: maneja el teclado.
  • LPT1-LPT3: maneja los puertos pararelo (normalmente la impresora).
  • NUL: dispositivo nulo. Todo lo que se envíe a él simplemente es ignorado.
  • POINTER$: gestiona el dispositivo de puntero (el ratón).

Los dispositivos cuyo nombre acaba en $ no son accesibles directamente por los programas, y es preciso usar funciones específicas para acceder a ellos. Esto da una mayor riqueza y control sobre ellos.

Funciones del DOS


OS/2 ofrece una gran colección de llamadas para gestionar ficheros en el sistema de archivos. Estas llamadas permiten copiar un fichero a otro, renombrarlo, borrarlo, cambiar de directorio, etc.

DosCopy
DosMove
DosDelete
DosForceDelete
DosCreateDir
DosDeleteDir
DosQueryCurrentDir
DosQueryCurrentDisk
DosSetCurrentDir
DosSetDefaultDisk


Busqueda de ficheros


En muchas ocasiones un programa necesita conocer todos los ficheros que coinciden con un patrón determinado. Es el caso, por ejemplo, de querer mostrar una lista de ficheros que acaben en AL, o que tengan la letra F en el tercer lugar, etc. Para ello, OS/2 facilita una serie de funciones que permiten realizar ésto. En ellas se debe especificar un nombre de fichero, sabiendo que:

  • El símbolo ? sustituye a cualquier caracter situado en esa posicion. Así, la búsqueda de program?.exe devolverá los nombres de los ficheros que empiecen por program, a continuación tengan un caracter cualquiera, y por último, terminen con .exe, como por ejemplo, programa.exe, o programz.exe; pero no devolverá programad.exe ni programa.
  • El símbolo * sustituye a cualquier cadena situada desde esa posición en adelante. Así, la búsqueda de prog* devolverá cualquier fichero que empiece por prog, tenga lo que tenga después. Por ejemplo, devolverá programa, progs...



DosFindFirst
DosFindNext
DosFindClose




Redirección de entradas y salidas


Además de estos ficheros de dispositivo, existen también tres 'archivos' especiales: la entrada estandar (STDIN), la salida estandar (STDOUT), y la salida de error estandar (STDERR). Por defecto, STDIN está asociada al teclado, y STDOUT y STDERR a la pantalla; sin embargo, pueden ser redireccionadas desde la linea de comandos a un fichero o incluso a otro programa por medio de cauces o Pipes. Por ejemplo, si tenemos un programa UPCASE.EXE que lee de la entrada estandar un caracter, lo convierte en mayusculas y lo escribe en la salida estandar, y hacemos desde la linea de comandos un

C:\>UPCASE.EXE <entrada.txt >salida.txt

no se quedará esperando a que pulsemos una tecla, ni mostrará en pantalla lo que haya convertido. Lo que hará será leer caracteres del fichero entrada.txt, y todo lo que salga lo escribirá en el fichero salida.txt. Hemos redireccionado la entrada al fichero entrada.txt y la salida al fichero salida.txt. También podemos direccionar la salida de un programa a la entrada de otro programa distinto, con el caracter |. Así, si hiciesemos

C:\>UPCASE.EXE <entrada.txt |MORE.EXE

nos saldría el texto contenido en entrada.txt por pantalla, y cada vez que se llene ésta, esperará a que pulsemos una tecla. La salida de UPCASE.EXE ha sido tomada como entrada de MORE.EXE.

Para poder hacer ésto en nuestros programas, simplemente necesitamos leer las órdenes a través de la entrada estandar (indicando 0 como handle en DosRead) y enviar los resultados y errores por la salida estandar y la salida de error estandar (indicando respectivamente 1 y 2 como handle en DosWrite).

Variables de entorno


Para permitir la colocación de programas en múltiples directorios y simplificar algunas opciones de configuración, OS/2 facilita las variables de entorno. Se trata de una serie de variables que se definen bien en la línea de comandos, bien en el CONFIG.SYS, por medio de la sentencia SET. Por ejemplo, la línea



SET mi_variable=C:\OS2UTIL\MIPROGRAMA


asigna a la variable de entorno mi_variable el valor C:\OS2UTIL\MIPROGRAMA. De este modo, el usuario puede especificar el directorio en donde estarán diversas partes de un programa, o bien diversas opciones para éste. Por ejemplo, el compilador EMX requiere de algunas variables de este tipo para saber donde están las librerias, documentación, etc. El propio OS/2 hace uso de esta facilidad para implementar variables como el PATH de datos, etc.



DosScanEnv




Otras funciones DOS


Otras funciones pertenecientes a este grupo son las siguientes:



DosResetBuffer
DosShutdown
DosBeep


Autor y licencia de 'Manual de Programación en OS/2 - El sistema de ficheros de OS/2'
Supertutoriales Extraído de: http://www.publispain.com/supertutoriales

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Wikis relacionados con 'Manual de Programación en OS/2 - El sistema de ficheros de OS/2'

Un sistema informático utiliza ordenadores para almacenar datos, procesarlos y ponerlos a disposición de quien... Más »
El sistema inmune es el sistema de defensa que tienen los organismos superiores. Es un... Más »
Este documento describe cómo usar el sistema de spooling para impresoras de líneas que provee... Más »
En el presente trabajo los autores presentan una reflexión sobre los factores que inciden en... Más »
Cómo optimizar sus recursos y lograr el éxito en su emprendimiento.Un plan de negocios es... Más »
¿Estás seguro de que deseas eliminar este capítulo?