Está en la página 1de 5

1.

10 & Operativo Sistema 1


Consideraciones

1.10 Consideraciones del sistema operativo

En esta sección, analizamos una serie de temas que dependen del sistema. Comenzamos con la mecánica
de escribir y ejecutar un programa C.

Escribir y ejecutar un programa C

Los pasos de precise que deben seguirse para crear un archivo que contenga código C y
compilarlo y ejecutarlo dependen de tres cosas: el sistema operativo, el editor de texto y el
compilador. Sin embargo, en todos los casos el procedimiento general es el mismo. Primero describimos
con cierto detalle cómo se hace en un entorno UNIX. Luego discutimos cómo se hace en un envhierro
MS-DOS.ironment.
En la discusión que sigue, usaremos el comando cc para invocar el compilador de C. En realidad, sin
embargo, el comando depende del compilador que se está utilizando. Por ejemplo, si estuviéramos
usando la versión de línea de comandos del compilador Turbo C de Borland, usaríamos el
comando tcc en lugar de cc. (Para obtener una lista de compiladores de C, consulte la tabla de la Sección
11.13, "El compilador de C", en la página 522.)
Pasos a seguir por escrito y ejecutar un programa C
1 Con un editor, cree un archivo de texto, como pgm.c, que contenga un programa C. El nombre
del archivo debe terminar con .c, lo que indica que el archivo contiene código fuente de C. Por
ejemplo, para utilizar el editor vi en un sistema UNIX, daríamos el comando

Para utilizar un editor, el programador debe conocer los commands apropiados para insertar y
modificar
texto.
2 Compile el programa. Esto se puede hacer con el comando

cc pgm.c
El comando cc invoca a su vez el preprocesador, el compilador y el cargador. El preprocesador
modifica una copia del código fuente según las directivas de preprocesamiento y produce
lo que se denomina una unidad de traducción. El compilador traduce la unidad de traducción en
código de objeto. Si hay errores, el programador debe comenzar de nuevo en el paso 1 con
la edición del archivo de origen. Los errores que se producen en esta etapa se denominan
errores de sintaxis o errores en tiempo de compilación. Si no hay errores, el cargador
utiliza el código de objeto generado por el compilador, junto con el código de objeto obtenido
de bibliotecas vari- ous proporcionadas por el sistema, para crear elarchivo detabla execu a.out.
El programa ya está listo para ser ejecutado.
3 Ejecute el programa. Esto se hace con el comando

A.out
Normalmente, el programa completará la ejecución y un mensaje del sistema volverá a aparecer
en la pantalla. Los errores que se producen durante la ejecución se denominan errores en tiempo
de ejecución. Si por alguna razón el programa necesita ser cambiado, el programador debe
comenzar de nuevo en el paso 1.

Si compilamos un programa diferente, entonces el archivo a.out se sobrescribirá y su


contenido anterior se perderá. Si se va a guardar el contenido del archivo ejecutable a.out, se debe
mover o cambiar el nombre del archivo. Sup- pose que damos el comando

cc sia,c

Esto hace que el código ejecutable se escriba automáticamente en a.out. Para guardar este archivo, podemos dar
la com-
hombre

mv a.out sea

Esto hace que a.out sea trasladado al mar. Ahora el programa se puede ejecutar dando el comando

Mar
En UNIX, es una práctica común dar al archivo ejecutable el mismo nombre que el
archivo de origen correspondiente, excepto para quitar el sufijo .c. Si lo deseamos, podemos
usar la opción —n para dirigir la salida del comando cc.
Por ejemplo, el comando

cc —o sea sea.c

hace que la salida ejecutable de cc se escriba directamente en el mar, dejando intacto lo que está en a.out.
Pueden producirse diferentes tipos de errores en un programa. Los errores de sintaxis son detectados
por el compilador, mientras que los errores en tiempo de ejecución se manifiestan solo durante la
ejecución de program. Por ejemplo, si un intento de dividir por cero se codifica en un programa, puede
producirse un error en tiempo de ejecución cuando se ejecuta el programa. (Véase el ejercicio 5, en
la página 59, y el ejercicio 6, en la página 59.) Por lo general, un mensaje de error generado por un error
en tiempo de ejecución no es muy útil para encontrar el problema.
Consideremos ahora un entorno MS-DOS. Aquí, lo más probable es que se utilice algún otro editor de
texto. both Algunos sistemas C, como Turbo C, tienen un entorno de línea de comandos y un
entorno integrado. El entorno integrado incluye tanto el editor de texto como el compilador. (Consulte
los manuales de Turbo C para obtener más información.) Tanto en MS-DOS como en UNIX, el
comando que invocakes el compilador de C depende de qué C com- piler se está utilizando. En
MS-DOS, la salida ejecutable producida por un compilador de C se escribe en un archivo con el
mismo nombre que el archivo de origen, pero con la extensión .exe en lugar de . c. Supongamos, por
ejemplo, que estamos utilizando el entorno de línea de comandos en Turbo C. Si damos el mando

tcc sea.c

a continuación, el código ejecutable se escribirá en sea.exe. Para ejecutar el programa, damos el comando

sea.exe o equivalentemente mar

Para invocar el programa, no es necesario escribir la extensión .exe. Si deseamos cambiar el nombre de
este archivo, podemos usar el comando rename. command.
Interrumpir un programa

Al ejecutar un programa, el usuario puede querer intemipt, o matar, el programa. Por ejemplo, el
programa puede estar en un bucle infinito. (En un entorno interactivo no es necesariamente
incorrecto usar un bucle infinito en un programa.) A lo largo de este texto nos asulque el usuario sabe
cómo interrumpir un programa. En MS-DOS y en UNIX, un control-c se utiliza comúnmente para
realizar una interrupción. En algunos sistemas se utiliza una clave especial, como eliminar o frotar.
Asegúrese de saber cómo intemipt un programa en su sistema.

Escribir una señal de fin de archivo

Cuando un programa está tomando su entrada del teclado, puede ser necesario generar una
señal de fin de archivo para que el programa funcione correctamente. En UNIX, un retorno de carro
seguido de un control-d es la forma típica de realizarffect una señal de fin de archivo. (Véase el ejercicio
26, en la página 66, para discusión.)

Redirección de la entrada y la salida


Muchos sistemas operativos, incluidos MS-DOS y UNIX, pueden redirigir la entrada y la salida. Para
subestimar cómo funciona esto, primero consider el comando UNIX

Este comando hace que se escriba una lista de archivos y directorios en la pantalla. (El comando
comparable en MS-DOS es dir.) Ahora considere el comando

El símbolo > hace que el sistema operativo redirija la salida del comando al archivo tmp. Lo
que se escribió en la pantalla antes ahora se escribe en el archivo tmp.
Nuestro próximo programa se llama dbl out. Se puede utilizar con la redirección tanto de la entrada
como de la salida. El programa lee los caracteres del archivo de entrada estándar, que normalmente está
conectado al teclado, y escribe cada carácter dos veces en el archivo de salida estándar, que normalmente
está conectado a la pantalla.
En el archivo dbl out.c

#include <stdio.h>

int main(void)

tanque c;

mientras (scanf("%c", &c) 1) (


printf((%c), c);
printf((%c), c);

retorno 0;

Si compilamos el programa y ponemos el código ejecutable en el archivo dbl hacia fuera,


entonces, usando la redirección, podemos
invocar el programa de cuatro maneras:

dbl fuera
dbl out < infile
dbl out >
outfile
dbl out < infile > outfile

Utilizado en este contexto, los símbolos < y > se pueden considerar como flechas. (Véase el ejercicio 26,
en la página 66, para su posterior discusión.)
Algunos comandos no están diseñados para ser utilizados con la redirección. Por ejemplo, el
comando 1s no lee caracteres del teclado. Por lo tanto, no tiene sentido redirigir la entrada al comando
1s; porque no toma la entrada del teclado, no hay nada que redirigir.

También podría gustarte