Llamadas al Sistema en UNIX.

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Llamadas al Sistema en UNIX."

Transcripción

1 Gestión de ficheros: creat, open, read, write, close. Un fichero en UNIX: Es una secuencia de Byte sin formato, se accede a ellos de forma directa. La interpretación del contenido depende de las variables que use para lectura y escritura (enteros, caracteres,..). Existe un puntero que indica la posición del siguiente byte a leer o escribir, se actualiza tras cada operación. Tiene asociados unos permisos: rwxrwxrwx (usuario, grupo, otros) que se representan como un número en octal Ejemplo: rwxrw-r-- será: 0764 Sistemas Operativos (IS11) Tema 1 57 Un proceso o programa tiene asignada una tabla de descriptores de ficheros. La tabla tiene un tamaño de 20 elementos. El descriptor de fichero es un número entero (0-19) que tiene asociado un fichero. El proceso accede a un fichero a través de un descriptor de ficheros. Un proceso sólo puede usar a la vez 20 ficheros. Inicialmente están asignadas las posiciones: 0: entrada estándar, 1: salida estándar, 2: salida de error estándar Sistemas Operativos (IS11) Tema 1 58

2 Creación de nuevos ficheros: creat. Sintaxis: #include <fcntl.h> int creat (nombre, mode_t permisos); const char *nombre; mode_t permisos; Si existe el fichero : No modifica los permisos. Si tiene permiso de escritura borra el contenido. Sino tiene permisos de escritura da un error. Sino existe: Lo crea y añade permisos de escritura. Devuelve un entero: Sino hay error: entre 0 y 19 (el descriptor del fichero). Devolverá el más bajo que este libre (no asociado). Si hay error: un número negativo. Ejemplos: fd=creat( prueba,0666); fd=creat( /usr/prácticas/hola/prueba.c,0600); Sistemas Operativos (IS11) Tema 1 59 Escritura de datos en un fichero: write. Sintaxis: #include <unistd.h> size_t write(desc_fich,dato,n_bytes); int desc_fich; const void *dato; size_t n_bytes; El número de caracteres que ha podido escribir (n_escritos). Un valor negativo si ha ocurrido un error en la llamada. Ejemplos: int n_escritos, fprueba; fprueba =creat( fprueba,0666); n_escritos= write(fprueba, Esto es el dato del fichero\0,28); \0 es un carácter que delimita el final de una cadena Sistemas Operativos (IS11) Tema 1 60

3 Ejemplo 1: crear fichero y escribir en el del 0 al 9 a) #include <stdio.h> #include <fcntl.h> #include <unistd.h> int main() { int i, fd; fd=creat( prueba,0600); for (i=0;i<10;i++) write(fd,&i,sizeof(i)); b) #include <stdio.h> #include <fcntl.h> #include <unistd.h> int main() { int i, fd, vector[10]; fd=creat( prueba,0600); for (i=0;i<10;i++) vector[i]=i ; write(fd,vector,sizeof(vector));!!!faltaría cerrar el fichero!!! Sistemas Operativos (IS11) Tema 1 61 Cerrar un fichero: close. Cuando no se va a acceder a los datos de un fichero se cierra. La utilidad es dejar libre un descriptor de ficheros. Sintaxis: #include <unistd.h> int close(descriptor_fichero); int descriptor_fichero; 0 si se ha cerrado el fichero ó -1 en caso contrario. Ejemplo 2: #include <stdio.h> #include <fcntl.h> #include <unistd.h> int main() { int fd, i, vector[10]; fd=creat( prueba,0600); for (i=0;i<10;i++) vector[i]=i; write(fd,vector,sizeof(vector)); close(fd); Sistemas Operativos (IS11) Tema 1 62

4 Acceso a ficheros existentes: open. Sintaxis: #include <fcntl.h> int open(nombre, modo, permisos); const char *nombre; int modo, permisos; -1 si se produce un error El número de descriptor asociado al fichero abierto (el más bajo libre en la tabla de descriptores). Modos: O_RDONLY (0) El fichero se abre para lectura. El puntero en byte 0. O_WRONLY (1) El fichero se abre para escritura. Puntero en byte 0. O_RDWR (2) El fichero se abre en modo lectura/escritura O_CREAT Sino existe el fichero se crea. O_TRUNC Si existe se borra la información que contiene. O_EXCL Con O_CREAT la llamada falla si el fichero existe. O_APPEND El puntero del fichero apunta al final del mismo. Para activar varios modos a la vez se usa un OR. Ejemplos: fd=open( fichero,1 O_CREAT,0666); fd=open( fichero,o_wronly O_CREAT O_TRUNC,0644); Sistemas Operativos (IS11) Tema 1 63 Lectura de datos de fichero: read. Sintaxis: #include <unistd.h> size_t read(fd, dato, bytes); int fd; const void *dato; size_t bytes; Hay que abrir previamente el fichero. El puntero del fichero quedará indicando el siguiente byte a leer. Tras una operación se avanza el puntero. El número de carácter leído (puede ser menor que bytes si se ha alcanzado el final del fichero). -1 si ha ocurrido un error en la llamada. Sistemas Operativos (IS11) Tema 1 64

5 Ejemplo 3: escribir en prueba de 0 a 9 y después leer el contenido de prueba e imprimir en pantalla. #include <stdio.h> #include <unistd.h> #include <fcntl.h> int main() { int fd, i, vector[10], dato, leidos; fd= creat( prueba,0600); for (i=0;i<10;i++) vector[i]; write(fd,vector,sizeof(vector)); close(fd); fd= open( prueba,o_rdonly); while ((leidos= read(fd,&dato,sizeof(int)))>0) { printf( Leido el número %d\n,dato); close(fd); Sistemas Operativos (IS11) Tema 1 65 Gestión de procesos: fork, wait, exit, execlp, execvp, pipe y dup. Hay una versión jerárquica de procesos: Un proceso (hijo) aparece porque otro proceso lo genera (padre) mediante una llamada al sistema. Clases de llamadas: Para generar y controlar procesos: fork, wait, exec. Para reiniciar el código del proceso: execlp, execvp. Para comunicación entre procesos: pipe, dup. Crear un nuevo proceso: fork. Sintaxis: pid=fork(); int pid; Si un proceso la ejecuta, se crea otro proceso que es réplica de si mismo en memoria: El código (programa) de los dos procesos es el mismo. Sistemas Operativos (IS11) Tema 1 66

6 Cada proceso continua la ejecución por separado (en el punto de la llamada). Todas las variables serán idénticas. Los descriptores de ficheros son iguales. Cómo se distingue entre el padre y el hijo? fork() devuelve un entero: Valdrá cero en el hijo. Valdrá el identificador del proceso hijo en el padre. Ejemplo 4: #include <stdio.h> main() { printf( Inicio de test\n ); if (fork() = = 0) printf( Yo soy el hijo \n ); else printf( Yo soy el padre \n ); Sistemas Operativos (IS11) Tema 1 67 Ejemplo 5: #include <stdio.h> int main() { int i, j; if (fork()!=0) else { for (i=0;i<100;i++) { for (j=0;j<100000;j++); printf( Proceso padre. Indice i=%d\n,i); { for (i=0;i<100;i++) { for (j=0;j<100000;j++); printf( Proceso hijo. Indice i=%d\n,i); Sistemas Operativos (IS11) Tema 1 68

7 Ejemplo 6: Dos procesos leen simultáneamente de un fichero #include <stdio.h>... int main() { int i, j fd; int dato; fd= open( fprueba,o_rdonly); if (fork()!=0) { while (read(fd,&dato,sizeof(int))>0) { for (j=0;j<100000;j++); /*espera*/ printf( Proceso padre. Dato =%d\n,dato); else { while (read(fd,&dato,sizeof(int))>0) { for (j=0;j<100000;j++); /*espera*/ printf( Proceso hijo. Dato =%d\n,dato); close(fd); Sistemas Operativos (IS11) Tema 1 69 Reiniciar el código del proceso: variantes de exec. Permite cambiar el código del programa que se ejecuta: Cargará en memoria el código de un programa que estará en un fichero ejecutable. Lo carga sobre el código que existía en el proceso, sustituyéndolo. Una vez cargado comienza a ejecutarse. Qué ocurre con las instrucciones que hay después de exec en el programa original? Hay 6 llamadas exec. Veremos dos: execlp y execvp. Sintaxis: #include <unistd.h> int execlp(fichero,arg0,arg1,arg2,, argn, (char *)0); const char *fichero; const char *arg0; const char *arg1; const char *arg2;. const char *argn; Sistemas Operativos (IS11) Tema 1 70

8 Sintaxis: #include <unistd.h> int execvp(fichero, argv); const char *fichero; const char *argv[]; Ejemplo: execlp( ls, ls, -l,null); execvp( ls, ls -l ); Espera a que termine el proceso hijo: wait. En ocasiones es necesario que el proceso padre espere a la finalización de un proceso hijo. Sintaxis: #include <sys/wait.h> pid_t wait(estado); int *estado; El valor del pid del proceso hijo que acaba. El proceso padre se desbloqueará cuando el hijo termine: normal (exit(0)) o anormalmente. Sistemas Operativos (IS11) Tema 1 71 Ejemplo 7: #include <stdio.h> int main() { int j, fd; int dato, estado; /* Diferencia ejemplo 6 */ fd= open( fprueba,o_rdonly); if (fork()!=0) { while (read(fd,&dato,sizeof(int))>0) { for (j=0;j<100000;j++); printf( Proceso padre. Dato =%d\n,dato); wait(&estado); /* Diferencia ejemplo 6 */ else { while (read(fd,&dato,sizeof(int))>0) { for (j=0;j<100000;j++); printf( Proceso hijo. Dato =%d\n,dato); close(fd); Sistemas Operativos (IS11) Tema 1 72

9 Terminación de un proceso: exit. Sintaxis: #include <stdlib.h> void exit(estado); int estado; Indica al S.O. la terminación del proceso. No es necesaria, si aconsejable: Cierra los descriptores de ficheros abiertos (Ver ejemplo 1). Si el proceso padre ejecutó una llamada wait se activa. Comunicación entre procesos: pipe (tubería): UNIX proporciona un mecanismo básico de comunicación entre procesos: tuberías. Es un tipo especial de fichero. Tiene asociados dos descriptores de ficheros. Por uno los procesos pueden escribir en la tubería. Por el otro pueden leer de la tubería. Sistemas Operativos (IS11) Tema 1 73 Sintaxis: int pipe(descriptor); int descritor[2]; descriptor[1]: descriptor para escribir datos en la tubería. descriptor[0]: descriptor para leer datos de la tubería (en orden llegada) Cuando se cierra descriptor[1] se introduce un EOF. Ejemplo 8: Escribir y leer en una tubería #include <stdio.h> #include <unistd.h> int main() { int dato, fd[2]; pipe (fd); for (dato=0;dato<10;dato++) write(fd[1],&dato,sizeof(int)); close(fd[1]); prinf( Datos escritos en la tubería\n ); printf( Se leen los datos\n ); while (read(fd[0],&dato,sizeof(int))>0) printf( %d\n,dato); close(fd[0]); Sistemas Operativos (IS11) Tema 1 74

10 Ejemplo 9: Escribir y leer en tubería #include <stdio.h> #include <unistd.h> int main() { int dato, fd[2]; pipe (fd); for (dato=0;dato<10;dato++) write(fd[1],&dato,sizeof(int)); prinf( Datos escritos en la tubería\n ); printf( Se leen los datos\n ); while (read(fd[0],&dato,sizeof(int))>0) printf( %d\n,dato); close(fd[1]); close(fd[0]);!! Mal, no acaba!! hay que cerrar fd[1] para que read no se bloquee Sistemas Operativos (IS11) Tema 1 75 Ejemplo10: #include <stdio.h> /*COMUNICACIÓN PADRE HIJO*/ int main(argc,argv[]) int argc; char *argv[]; {int tubería[2], dato, suma, estado; pipe(tuberia); if (fork()!=0) { /* proceso padre, escribe de 1 a dato */ close(tuberia[0]); dato=atoi(argv[1]); /*transforma argv[1] en entero*/ for (i=1;i<=dato;i++) write(tuberia[1],&i,sizeof(int)); close(tuberia[1]); /* Que pasa si la quito? */ wait(&estado); /* Que pasa si la quito? */ printf( El padre finaliza despues que el hijo\n ); else { /* proceso hijo, suma de 1 a dato*/ close(tuberia[1]); suma = 0; while (read(tuberia[0],&dato,sizeof(int))>0) suma=suma+dato; close(tuberia[0]); /* Que pasa si la quito? */ prinf( Suma calculada en el proceso hijo%d\n,suma); Sistemas Operativos (IS11) Tema 1 76

11 Duplicación de descriptores de fichero: dup. Sintaxis: #include <unistd.h> int dup(desc_fich); int desc_fich; Duplica el descriptor de fichero que se le pasa como parámetro. Devuelve el número del nuevo descriptor duplicado (tendremos dos descriptores apuntando al mismo sitio): Utilizaría el descriptor de fichero de número más bajo para la copia. Sistemas Operativos (IS11) Tema 1 77 Ejemplo 11: #include <stdio.h> int main() {int fichero, duplicado, i dato, salir; fichero= creat( fprueba,0644); for (i=0;i<10;i++) write(fichero,&i,sizeof(int)); close(fichero); printf( Ya se ha creado el fichero\n ); fichero=open( fprueba,o_rdonly); printf( Abierto el fichero sobre descriptor: %d\n,fichero); duplicado= dup(fichero); printf( Duplicado sobre descriptor: %d\n,duplicado); salir= FALSE; while (!salir) {salir= (read(fichero,&dato,sizeof(int))==0); if (!salir) {printf( dato leido mediante fichero = %d\n,dato); salir= (read(duplicado,&dato,sizeof(dato))==0); if (!salir) printf( dato leido mediante duplicado = %d\n,dato); else printf( Final de fichero encontrado en duplicado\n ); else printf( Final de fichero encontrado en fichero\n ); close(fichero); close(duplicado); Sistemas Operativos (IS11) Tema 1 78

12 Gestión de ficheros y directorios: remove, rename, lseek, stat, mkdir, rmdir y chdir. Borrar un fichero: remove. Sintaxis: #include <stdio.h> int remove (Filename); const char *Filename; Borra el fichero llamado Filename El fichero no se borrará si está abierto cuando se utiliza la llamada remove. Si el fichero tiene varios links (enlaces duros) la cuenta de estos desciende en uno. cero en caso de que se haya podido borrar el fichero. un valor no nulo en caso contrario. Sistemas Operativos (IS11) Tema 1 79 Cambio el nombre de un directorio o fichero: rename. Sintaxis: #include <stdio.h> int rename (FromPath, ToPath); const char * FromPath, ToPath; FromPath identifica el fichero o directorio cuyo nombre se cambia. ToPath identifica el nuevo path. FromPath, ToPath deben ser ambos del mismo tipo (fich, o direc). Si ToPath es fichero o directorio vacío se reemplaza por FromPath. Si es directorio no vacío no cambia el nombre y da error. -1 en caso de error. 0 en caso contrario. Errores: Si no se tienen permisos de ejecución en los directorios de los caminos (paths), permisos de escritura en los directorios o ficheros oportunos, etc. Si algún parámetro está siendo usado al mismo tiempo por el sistema. Si ToPath especifica un directorio no vacío, FromPath es directorio y ToPath no ó FromPath es fichero y ToPath no. Sistemas Operativos (IS11) Tema 1 80

13 Mover puntero de lectura o escritura de un fichero abierto : lseek. Sintaxis: #include <unistd.h> off_t lseek ( FileDescriptor, Offset, Whence) int FileDescriptor, Whence; off_t Offset; Posiciona el puntero de un fichero abierto cuyo descriptor sea FileDescriptor. FileDescriptor especifica el descriptor de un fichero abierto con la llamada open. Offset especifica el valor en bytes que se desplazará el puntero. Un valor negativo mueve en dirección inversa. El valor de offset está limitado por OFF_MAX. Whence especifica cómo interpretar Offset para mover el puntero del fichero especificado por FileDescriptor. Será uno de los siguientes valores que están definidos en el fichero /usr/include/unistd.h: Sistemas Operativos (IS11) Tema 1 81 SEEK_SET (ó 0) Mueve el puntero a la posición indicada por Offset. SEEK_CUR (ó 1) El Offset se usa como desplazamiento relativo desde la posición actual del puntero. La posición final del puntero será (actual + Offset). SEEK_END (ó 2) El Offset se usa como desplazamiento relativo desde el final del fichero. La posición final del puntero será (final de fichero + Offset). Devuelve la localización final del puntero en bytes medida desde el inicio del fichero. Devuelve -1 en caso de error.. Errores: Si FileDescriptor no corresponde a un fichero abierto. Si FileDescriptor corresponde a una tubería abierta. Si el offset sobrepasa el límite permitido definido en OFF_MAX. En el fichero /usr/include/unistd.h están definidos los macros, tipos y subrutinas. Sistemas Operativos (IS11) Tema 1 82

14 Obtiene información referente a un fichero : stat. Sintaxis: #include <sys/stat.h> int stat ( Path, Buffer ) const char *Path; struct stat *Buffer; Obtiene información referente a un fichero del cual damos su path. Path especifica el nombre del fichero. Buffer es un puntero a la estructura stat en el que se devuelve la información. No son necesarios permisos de lectura, escritura o ejecución para el fichero. En la ruta del Path todos los directorios deben tener permisos de ejecución. Detallamos aquí sólo los campos de la estructura stat más importantes. Sistemas Operativos (IS11) Tema 1 83 Detallamos aquí sólo los campos de la estructura stat más importantes. struct stat { dev_t st_dev; /* Dispositivo de ubicación del i_nodo */ ino_t st_ino; /* Número de i_nodo */ mode_t st_mode; /*Bits que indican tipo de fichero y permisos, en octal*/ nlink_t st_nlink; /* Número de enlaces al fichero */ uid_t st_uid; /* UID del propietario */ gid_t st_gid; /* GID del propietario */ off_t st_size; /* Tamaño del archivo en caracteres o bytes */ time_t st_atime; /* Tiempo de último acceso */ time_t st_mtime; /* Tiempo de última modificación */ time_t st_ctime; /* Tiempo de último cambio en el i_nodo */ Sistemas Operativos (IS11) Tema 1 84

15 -1 en caso de error. 0 en caso contrario. Errores: Permiso denegado en alguno de los directorios del path. Un componente del path no es un directorio. No existe el fichero. La estructura stat está definida en el fichero /usr/include/sys/stat.h. Los valores de algunos campos de stat están definidos en anubis en el fichero /usr/include/sys/mode.h y para linux ver: man 2 stat Los tipos de datos están definidos en el fichero /usr/include/sys/types.h. Sistemas Operativos (IS11) Tema 1 85 El campo st_mode viene representado por un número en octal de 6 dígitos Digíto1) número octal que representa los permisos de otros sobre el fichero. Digíto2) número octal que representa los permisos de grupo sobre el fichero. Digíto3) número octal que representa permisos de usuario sobre el fichero. Para averiguar los permisos se pueden utilizar las siguientes máscaras de bits (los valores están puestos en octal), que se encuentran definidas en los diferentes ficheros que se incluyen al usar la llamada stat. #define S_IRWXU /* read,write,execute perm: owner */ #define S_IRUSR /* read permission: owner */ #define S_IWUSR /* write permission: owner */ #define S_IXUSR /* execute/search permission: owner */ #define S_IRWXG /* read,write,execute perm: group */ #define S_IRGRP /* read permission: group */ #define S_IWGRP /* write permission: group */ #define S_IXGRP /* execute/search permission: group */ #define S_IRWXO /* read,write,execute perm: other */ #define S_IROTH /* read permission: other */ #define S_IWOTH /* write permission: other */ #define S_IXOTH /* execute/search permission: other */ Sistemas Operativos (IS11) Tema 1 86

16 Digíto 4) No lo usaremos. Digíto5 y 6) Contiene el tipo de fichero. Para averiguarlo se utilizan las siguientes máscaras de bits (los valores están puestos en octal), que se encuentran definidas en los diferentes ficheros que se incluyen al usar la llamada stat. #define S_IFMT /* type of file */ #define S_IFREG /* regular */ #define S_IFDIR /* directory */ #define S_IFBLK /* block special */ #define S_IFCHR /* character special */ #define S_IFIFO /* fifo */ Para conocer un campo concreto de la estructura stat se puede utilizar máscaras junto con la operación & (se trata de un AND bit a bit) o usar macros. Ver man 2 stat. Al utilizar & es conveniente usar paréntesis para distinguir con claridad la prioridad de las operaciones que se utilicen. Sistemas Operativos (IS11) Tema 1 87 Ejemplo: Si queremos ver si un nombre que pasamos como primer argumento al programa es un fichero regular, tendríamos que poner al menos las siguientes líneas de programa { struct stat campo;... /*Sacar el contenido de la estructura*/ stat(argv[1], &campo); /*Usar una máscara para ver si es fichero*/ if ( ( ( )&(campo.st_mode) ) = = ( ) ) printf( %s es un fichero regular \n, argv[1] ); else printf( %s no es un fichero regular \n, argv[1] ); Sistemas Operativos (IS11) Tema 1 88

17 Ejemplo: La línea if del ejemplo anterior puede realizarse utilizando el nombre dado para la máscara en el fichero /usr/include/sys/stat.h (o consultar man 2 stat). Quedará entonces: if ( ( (S_IFREG)&(campo.st_mode) ) = = (S_IFREG) ) printf( %s es un fichero regular \n, argv[1] ); else printf( %s no es un fichero regular \n, argv[1] ); Sistemas Operativos (IS11) Tema 1 89 Ejemplo: Finalmente, podemos utilizar una macro denominada S_ISREG(m) definida en el fichero /usr/include/sys/stat.h (mode.h en anubis). Así dichas líneas quedarían: : if ( S_ISREG ( campo.st_mode ) ) printf( %s es un fichero regular \n, argv[1] ); else printf( %s no es un fichero regular \n, argv[1] ); Las macros definidas son: S_ISFIFO(m) tipo de fichero fifo S_ISDIR(m) tipo de fichero directorio S_ISCHR(m) tipo de fichero de caracteres especiales S_ISBLK(m) tipo de fichero de bloques especiales S_ISREG(m) tipo de fichero regular Sistemas Operativos (IS11) Tema 1 90

18 Crea un directorio: mkdir. Sintaxis: #include <stdio.h> int mkdir (Path, Mode); const char * Path; mode_t Mode; Crea un nuevo directorio con los bits de permisos indicados en Mode. Path especifica el nombre del nuevo directorio. Mode especifica la máscara de lectura, escritura y ejecución para usuario, grupo y otros con la que se creará el nuevo directorio (en octal). -1 en caso de error. 0 en caso contrario. Errores: No se tienen los permisos adecuados para crear el directorio. El nombre dado existe como fichero. La longitud del Path es demasiado larga. Algún componente del Path no es un directorio o no existe. Sistemas Operativos (IS11) Tema 1 91 Borra un directorio: rmdir. Sintaxis: #include <stdio.h> int rmdir (Path); const char * Path; Borra el directorio especificado en Path. Para ello hay que tener permiso de escritura en el directorio padre de Path. Path especifica un nombre de directorio. -1 en caso de error. 0 en caso contrario. Errores: No se tiene permiso de escritura en el directorio padre de Path. El directorio no está vacío. La longitud de Path excede la permitida. No existe el directorio. Uno componente de Path no es directorio. El directorio se refiere a un punto en el que hay montado un dispositivo. Sistemas Operativos (IS11) Tema 1 92

19 Cambiar el directorio de trabajo: chdir. Sintaxis: #include <stdio.h> int chdir (Path); const char * Path; Cambia el directorio de trabajo actual por el directorio indicado en Path Path especifica el nombre del directorio donde se desea cambiar -1 en caso de error. 0 en caso contrario. Errores: El acceso al nuevo directorio no está permitido (no se tienen permisos adecuados) Path no es un directorio. Sistemas Operativos (IS11) Tema 1 93 Ejercicio 12.-En una base de datos (fichero llamado base) tenemos el formato que se describe a continuación. Los registros (de 2 campos) son de longitud fija, 64 bytes. El primer campo tiene formato de número entero (4 bytes) y almacena un entero que da la longitud del nombre acumulado en el segundo campo. El segundo campo contiene el nombre asociado (caracteres) seguido por caracteres basura hasta un total de 60 bytes. El formato sería el siguiente: 8 Mercedes 6 Carlos 7 Julieta Realizar un programa en C que usando llamadas al sistema lea, de manera adecuada, el fichero base que represente la base de datos anterior e imprima en pantalla en diferentes líneas los nombres que contiene. Sistemas Operativos (IS11) Tema 1 94

20 #include <stdio.h> #include <unistd.h> #include <fcntl.h> main() { int fd, n, i, mueve, n_read, pos; dato, leidos; char dato[60]; fd= open( base, 0); /*abrir base para leer*/ n= lseek(fd, 0, 0); /*posicionar en primer dato*/ for (i=1;i<4;i++) /* recorrer cada registros { n_read=read(fd,&pos,sizeof(int)); /*leer primer entero*/ n_read=read(fd, dato, pos); /*leer nombre de tamaño pos*/ dato[pos]= \0 ; /*fin de nombre leido*/ printf( %s\n, dato); /*imprimir nombre*/ mueve=64*i; /*puntero al siguiente registro*/ n=lseek(fd, mueve,0); close(fd); /*cerrar fichero*/ Sistemas Operativos (IS11) Tema 1 95 Ejercicio 13.-Realizar un programa en C que usando la llamada al sistema stat, nos imprima en pantalla si el nombre que se pasa como argumento es un fichero o es un directorio. En caso de ser fichero debe también imprimir la siguiente información: -tamaño del mismo -permisos que tenga habilitados -tiempo de la ultima modificación (usar ctime) Ejemplo de ejecución: pepe es fichero de tamaño 512 bytes permiso de lectura para propietario permiso de escritura para propietario permiso de ejecución para el grupo se modificó en Tue Nov 9 18:26: Sistemas Operativos (IS11) Tema 1 96

21 #include <stdio.h> #include <unistd.h> #include <time.h> main(argc, argv) int argc; char * argv[]; { struct stat campo; stat(argv[1], &campo); if (S_ISDIR(campo.st_mode)) printf( %s es un directorio\n, argv[1]); else if (S_ISREG(campo.st_mode)) { printf( %s es un fichero\n, argv[1]); printf( de tamaño %d \n, campo.st_size); /*PERMISOS PROPIETARIO*/ if (((S_IRUSR)&(campo.st_mode))= =(S_IRUSR)) /* */ printf( De lectura para el propietario\n ); if (((S_IWUSR)&(campo.st_mode))= =(S_IWUSR)) /* */ printf( De escritura para el propietario\n ); if (((S_IXUSR)&(campo.st_mode))= =(S_IXUSR)) /* */ printf( De ejecución para el propietario\n ); Sistemas Operativos (IS11) Tema 1 97 /*PERMISOS GRUPO*/ if (((S_IRGRP)&(campo.st_mode))= =(S_IRGRP)) /* */ printf( De lectura para el grupo\n ); if (((S_IWGRP)&(campo.st_mode))= =(S_IWGRP)) /* */ printf( De escritura para el grupo \n ); if (((S_IXGRP)&(campo.st_mode))= =(S_IXGRP)) /* */ printf( De ejecución para el grupo \n ); /*PERMISOS OTROS*/ if (((S_IROTH)&(campo.st_mode))= =(S_IROTH)) /* */ printf( De lectura para otros\n ); if (((S_IWOTH)&(campo.st_mode))= =(S_IWOTH)) /* */ printf( De escritura para otros \n ); if (((S_IXOTH)&(campo.st_mode))= =(S_IXOTH)) /* */ printf( De ejecución para otros \n ); printf( Se modifico en: %s \n, ctime(&campo.st_mtime)); Sistemas Operativos (IS11) Tema 1 98

Programación de Sistemas. Programación de Sistemas con Ansi C sobre UNIX. Gestión de errores. Gestión de errores. Ficheros regulares

Programación de Sistemas. Programación de Sistemas con Ansi C sobre UNIX. Gestión de errores. Gestión de errores. Ficheros regulares Programación de Sistemas con Ansi C sobre UNIX Pedro Merino Gómez Jesus Martínez Cruz Dpto. Lenguajes y Ciencias de la Computación Universidad de Málaga Programación de Sistemas Llamadas al sistema Gestión

Más detalles

Sistemas Operativos Práctica 3

Sistemas Operativos Práctica 3 Sistemas Operativos Práctica 3 Ing. Andrés Bustamante afbustamanteg@unal.edu.co Ingeniería de Sistemas Facultad de Ingeniería Universidad de la Amazonia 2009 1. Objetivo El objetivo de la práctica es que

Más detalles

Asignación de disco en UNIX

Asignación de disco en UNIX SISTEMA DE FICHEROS Asignación de disco en UNIX Asignación de disco indexada (i-nodes) Bloques libres enlazados. Bloques de datos (y índices) Boot area Superblock Lista de i-nodes Introducció als Sistemes

Más detalles

Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 4 de Septiembre de 2009

Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 4 de Septiembre de 2009 Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 4 de Septiembre de 2009 1. [PROCESOS] a) Considerar el siguiente código: void main() { int j=10; pid_t pid; for (int i=0; i

Más detalles

Formatos para prácticas de laboratorio

Formatos para prácticas de laboratorio Fecha de efectividad: CARRERA PLAN DE ESTUDIO CLAVE ASIGNATURA NOMBRE DE LA ASIGNATURA LSC 2003-1 5221 Lenguaje de Programación Estructurada PRÁCTICA No. 8 LABORATORIO DE NOMBRE DE LA PRÁCTICA Licenciado

Más detalles

Sistemas Operativos. Iván Bernal, Ph.D. 4. Escuela Politécnica Nacional email: imbernal@mailfie.epn.edu.ec. Copyright @2002, I.

Sistemas Operativos. Iván Bernal, Ph.D. 4. Escuela Politécnica Nacional email: imbernal@mailfie.epn.edu.ec. Copyright @2002, I. Sistemas Operativos Clase # 9 Tipos de llamadas al Sistema Viernes, 3 de Mayo de 2002 Agenda Sorpresa! no hay prueba. Tipos de llamadas al sistema. Iván Bernal, Ph.D. Escuela Politécnica Nacional email:

Más detalles

Sistemas Operativos I Manual de prácticas

Sistemas Operativos I Manual de prácticas Sistemas Operativos I Manual de prácticas Grupo de Sistemas Operativos (DSIC/DISCA) Práctica 3: Procesos POSIX ANTES DE EMPEZAR...... 2 PRÁCTICA 3: PROCESOS POSIX... 2 CREACIÓN DE PROCESOS MEDIANTE FORK...

Más detalles

Sea el siguiente programa de nombre "c0p1" para copiar archivos (por simplicidad se ha eliminado todo control de errores): Se pide:

Sea el siguiente programa de nombre c0p1 para copiar archivos (por simplicidad se ha eliminado todo control de errores): Se pide: Sea el siguiente programa de nombre "c0p1" para copiar archivos (por simplicidad se ha eliminado todo control de errores): 1 /* c0p1 origen destino 2 * Copia "origen" sobre "destino" byte a byte, 3 * haciendo

Más detalles

SOLUCION EXAMEN junio 2006

SOLUCION EXAMEN junio 2006 SOLUCION EXAMEN junio 2006 1. Explique razonadamente si las siguientes afirmaciones son verdaderas o falsas: I) (1 p) En UNIX únicamente se distinguen dos tipos de procesos: los procesos de usuario y los

Más detalles

Trabajo Práctico 1 Sistema de archivos FAT16 en lenguaje ensamblador

Trabajo Práctico 1 Sistema de archivos FAT16 en lenguaje ensamblador Trabajo Práctico 1 Sistema de archivos FAT16 en lenguaje ensamblador Organización del Computador 2 1er. Cuatrimestre 2010 Versión 3 1. Introducción teórica En las viejas epocas de Windows 95, aparecieron

Más detalles

FILE *nombre_puntero_fichero; fopen(char_nombre_archivo,char_modo_apertura ); MODOS DE APERTURA. Abre un archivo de texto para lectura.

FILE *nombre_puntero_fichero; fopen(char_nombre_archivo,char_modo_apertura ); MODOS DE APERTURA. Abre un archivo de texto para lectura. FICHEROS El sistema de archivos de C está diseñado para secuencias que son independientes del dispositivo. Existen dos tipos se secuencias: de texto que es una ristra de caracteres organizados en líneas

Más detalles

7. Manejo de Archivos en C.

7. Manejo de Archivos en C. 7. Manejo de Archivos en C. Los datos que hemos tratado hasta el momento han residido en la memoria principal. Sin embargo, las grandes cantidades de datos se almacenan normalmente en un dispositivo de

Más detalles

Analista Universitario en Sistemas Sistemas Operativos Llamadas al sistema en Linux 2009

Analista Universitario en Sistemas Sistemas Operativos Llamadas al sistema en Linux 2009 Analista Universitario en Sistemas Sistemas Operativos Llamadas al sistema en Linux 2009 Introducción: Todo procesador moderno posee al menos dos modos de funcionamiento distintos modo kernel (Protected

Más detalles

Esquema de un programa en C: bloques básicos

Esquema de un programa en C: bloques básicos Esquema de un programa en C: bloques básicos // Incluimos los ficheros de cabecera que necesitemos. // Esto es un comentario #include #include // Si queremos definir alguna constante,

Más detalles

ARCHIVOS. 1. Introducción. 2. Definición de archivo. 3. Archivos de acceso secuencial. 4. Gestión de un archivo secuencial de estructuras

ARCHIVOS. 1. Introducción. 2. Definición de archivo. 3. Archivos de acceso secuencial. 4. Gestión de un archivo secuencial de estructuras ARCHIVOS 1. Introducción 2. Definición de archivo 3. Archivos de acceso secuencial 3.1. fopen 3.2. fclose 3.3. fcloseall 3.4. putc 3.5. getc 3.6. fscanf 3.7. fprintf 4. Gestión de un archivo secuencial

Más detalles

Programación Estructurada

Programación Estructurada Programación Estructurada PROGRAMACIÓN ESTRUCTURADA 1 Sesión No. 11 Nombre: Manejo de archivos Contextualización En los lenguajes de programación estructurada como C, que carecían de una conexión a base

Más detalles

Sistemas Operativos: Programación de Sistemas. Curso 2006-07. Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

Sistemas Operativos: Programación de Sistemas. Curso 2006-07. Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Tema 2 : entorno programación linux Sistemas Operativos: Programación de Sistemas Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez Curso 2006-07 Francisco J. Santana 1 Programación

Más detalles

; hcomment.rc HTTP://AA.ES/INFO.HTML http://www.bb.com http://www.cc.org/a.html aa.es www.bb.com www.cc.org ;

; hcomment.rc HTTP://AA.ES/INFO.HTML http://www.bb.com http://www.cc.org/a.html aa.es www.bb.com www.cc.org ; Examen de Sistemas Operativos ITIS Fuenlabrada Mayo 2011 Problema: Llamadas al sistema (3 puntos) Implemente en C para Plan 9 un programa hlines que a partir de una URL que se le pasa como argumento, escriba

Más detalles

Si el fichero hashes existe, el script debe notificar el error y salir como corresponde. A continuación se muestra un ejemplo:

Si el fichero hashes existe, el script debe notificar el error y salir como corresponde. A continuación se muestra un ejemplo: Examen de Sistemas Operativos ITIS Fuenlabrada Junio 2009 Tiempo total: 3 horas. Problema: Llamadas al sistema (5 puntos) Escriba en C para Plan 9 un programa llamado catsha1 cuyo propósito es crear un

Más detalles

Sistemas Operativos. Pedro Cabalar TEMA III. PROCESOS. Depto. de Computación Universidade da Coruña

Sistemas Operativos. Pedro Cabalar TEMA III. PROCESOS. Depto. de Computación Universidade da Coruña Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS. P. Cabalar Sistemas( Operativos Depto. de Computación Universidade Tema da Coruña III. Procesos ) 1 /

Más detalles

Contenido. Sistema de archivos. Operaciones sobre archivos. Métodos de acceso a archivos. Directorio. Sistema de archivos por capas.

Contenido. Sistema de archivos. Operaciones sobre archivos. Métodos de acceso a archivos. Directorio. Sistema de archivos por capas. Contenido Sistema de archivos Operaciones sobre archivos Métodos de acceso a archivos Directorio Sistema de archivos por capas Espacio libre Sistema de archivos Proporciona el mecanismo para el almacenamiento

Más detalles

GNU/Linux: Programación de Sistemas. Pablo Garaizar Sagarminaga

GNU/Linux: Programación de Sistemas. Pablo Garaizar Sagarminaga GNU/Linux: Programación de Sistemas Pablo Garaizar Sagarminaga GNU/Linux: Programación de Sistemas Pablo Garaizar Sagarminaga Facultad de Ingeniería Universidad de Deusto Bilbao, octubre de 2002 Tabla

Más detalles

LLAMADAS AL SISTEMA SISTEMAS OPERATIVOS

LLAMADAS AL SISTEMA SISTEMAS OPERATIVOS LLAMADAS AL SISTEMA SISTEMAS OPERATIVOS 26/05/2013 eduar14_cr@hotmail.com cilred_tlapa@hotmail.com LLAMADAS AL SISTEMA Las llamadas al sistema proporcionan la interfaz entre un proceso y el sistema operativo,

Más detalles

Prueba de Laboratorio Modelo B01 Semáforos y Memoria Compartida

Prueba de Laboratorio Modelo B01 Semáforos y Memoria Compartida Prueba de Laboratorio APELLIDOS: NOMBRE: GRUPO DE LABORATORIO: Indicaciones: No se permiten libros, apuntes ni teléfonos móviles. Cuando tenga una solución al ejercicio muéstrela al profesor (compilación

Más detalles

TEMA 6. Implementación de UNIX. Contenido

TEMA 6. Implementación de UNIX. Contenido TEMA 6 Implementación de UNIX Contenido 6.1. Introducción 6.2. El Núcleo (Kernel) de UNIX 6.3. Gestión de Procesos 6.3.1. Estructuras de Control de Procesos 6.3.2. Contexto de un proceso 6.3.3. Estados

Más detalles

PRÁCTICAS DE SS.OO. Universidad de Murcia. I.I./I.T.I. Sistemas/I.T.I. Gestión

PRÁCTICAS DE SS.OO. Universidad de Murcia. I.I./I.T.I. Sistemas/I.T.I. Gestión Universidad de Murcia Facultad de Informática Departamento de Ingeniería y Tecnología de Computadores Área de Arquitectura y Tecnología de Computadores PRÁCTICAS DE SS.OO. I.I./I.T.I. Sistemas/I.T.I. Gestión

Más detalles

Contenidos. Archivos en C++ Archivos en C++ Introducción

Contenidos. Archivos en C++ Archivos en C++ Introducción Contenidos 1. Introducción. 2. Manipulación de ficheros. 3. Organización de archivos. 4. Tipo de almacenamiento. 5. Biblioteca de flujos. 6. Operaciones asociadas a archivos: Abrir fichero, Cerrar fichero,

Más detalles

Procesos 1 / 31. Para entender el concepto de hebra, necesitamos compreender el concepto de proceso

Procesos 1 / 31. Para entender el concepto de hebra, necesitamos compreender el concepto de proceso Procesos 1 / 31 Concepto de proceso Para entender el concepto de hebra, necesitamos compreender el concepto de proceso Un proceso es un programa en ejecución Una instancia de un programa corriendo en un

Más detalles

Unidad 2: Gestión de Procesos

Unidad 2: Gestión de Procesos Unidad 2: Gestión de Procesos Tema 4, Procesos: 4.1 El concepto de proceso. 4.2 Planificación de procesos. 4.3 Procesos cooperativos. 4.4 Hilos (threads). Informática (Segovia) 1 4.1 El concepto de proceso.

Más detalles

Modelos de Computación I. Ingeniería Informática

Modelos de Computación I. Ingeniería Informática Prácticas Pag. 1 Modelos de Computación I Ingeniería Informática Práctica 1 Lex como localizador de expresiones regulares con acciones asociadas Curso 2008-2009 Profesores: Carlos J. Mantas Ruiz Aida Jiménez

Más detalles

Shell de Unix ProgPLN

Shell de Unix ProgPLN Shell de Unix ProgPLN Víctor Peinado v.peinado@filol.ucm.es 9 de octubre de 2014 Never use the graphical tool; always learn the old Unix tool. You ll be far more effective over time and your data will

Más detalles

Reglas básicas de la programación en lenguaje C

Reglas básicas de la programación en lenguaje C 0. Introducción Reglas básicas de la programación en lenguaje C ISO - SO Departament d'arquitectura de Computadors Universitat Politècnica de Catalunya C es un lenguaje de programación de propósito general.

Más detalles

Lenguaje C. Tipos de Datos Simples y Estructuras de Control

Lenguaje C. Tipos de Datos Simples y Estructuras de Control Lenguaje C Tipos de Datos Simples y Estructuras de Control Lenguaje C C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje

Más detalles

TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 2 CADENAS O VECTORES DE CARACTERES 6 3 PASO DE CADENAS Y ARRAYS A FUNCIONES 8

TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 2 CADENAS O VECTORES DE CARACTERES 6 3 PASO DE CADENAS Y ARRAYS A FUNCIONES 8 TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 1.1 VECTORES O ARRAYS UNIDIMENSIONALES 2 1.2 ARRAYS MULTIDIMENSIONALES 3 1.3 INICIALIZACIÓN DE ARRAYS 4 1.3.1 INICIALIZACIÓN DE ARRAYS SIN

Más detalles

El lenguaje de Programación C. Fernando J. Pereda

El lenguaje de Programación C. Fernando J. Pereda <ferdy@gentoo.org> El lenguaje de Programación C Fernando J. Pereda Por qué aprender C? Portable y muy extendido Estándar (C89, C99) El lenguaje de los sistemas Un lenguaje fácil (no, no es broma) Por

Más detalles

Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 9 de Febrero de 2007

Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 9 de Febrero de 2007 Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 9 de Febrero de 2007 Planteamiento del examen de TEORIA: El examen constará de 5 preguntas/cuestiones que pueden ser libremente

Más detalles

TEMA 4. ELEMENTOS BÁSICOS DE PROGRAMACIÓN

TEMA 4. ELEMENTOS BÁSICOS DE PROGRAMACIÓN TEMA 4. ELEMENTOS BÁSICOS DE PROGRAMACIÓN 4.1 Definiciones y palabras reservadas básicas del C El lenguaje C++ está compuesto por: 32 palabras clave (estándar ANSI), comunes a todos los compiladores de

Más detalles

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero. Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero. Uso de Ficheros Todas las estructuras de datos vistas hasta ahora utilizan la

Más detalles

TEMA 4. SISTEMA DE ARCHIVOS

TEMA 4. SISTEMA DE ARCHIVOS TEMA 4. SISTEMA DE ARCHIVOS 4.1. Características del sistema de archivos de UNIX 4.2. Estructura general de un sistema de archivos de UNIX 4.3. Representación interna de los archivos en UNIX 4.3.1. El

Más detalles

UTN FRR Ingeniería en Sistemas de Información Algoritmos y Estructuras de Datos Archivos Directos GUIA DE ESTUDIO: ARCHIVOS DIRECTOS

UTN FRR Ingeniería en Sistemas de Información Algoritmos y Estructuras de Datos Archivos Directos GUIA DE ESTUDIO: ARCHIVOS DIRECTOS GUIA DE ESTUDIO: ARCHIVOS DIRECTOS Introducción: Una característica común de los tipos de datos que hemos visto hasta ahora es que la información que cargamos se mantiene vigente solamente mientras está

Más detalles

6 Sistemas de Archivos

6 Sistemas de Archivos 6 Sistemas de Archivos Conceptos generales Archivos Directorios Semánticas de consistencia 1 Persistencia de datos Los sistemas de archivos implementan el almacenamiento persistente - los datos creados

Más detalles

Comandos básicos MS-DOS

Comandos básicos MS-DOS Comandos básicos MS-DOS Inicio Para iniciar DOS en Windows XP, hay que irse al botón de Inicio, Ejecutar y poner cmd. Se abrirá una ventana de DOS en la que se probarán todas las opciones de los comandos

Más detalles

Sistema de Ficheros. Sistemas Operativos - ITIG. Álvaro Polo Valdenebro. Abril 2009. apoloval@gsyc.es. GSyC - 2009 Introducción 1

Sistema de Ficheros. Sistemas Operativos - ITIG. Álvaro Polo Valdenebro. Abril 2009. apoloval@gsyc.es. GSyC - 2009 Introducción 1 Sistema de Ficheros Sistemas Operativos - ITIG Álvaro Polo Valdenebro apoloval@gsyc.es Abril 2009 GSyC - 2009 Introducción 1 c 2009 GSyC Algunos derechos reservados. Este trabajo se distribuye bajo la

Más detalles

Tema 7 Vectores y cadenas de caracteres. Fundamentos de Informática

Tema 7 Vectores y cadenas de caracteres. Fundamentos de Informática Tema 7 Fundamentos de Informática Índice 1. Qué es un vector? 2. Vectores unidimensionales 3. Cadenas de caracteres 4. Paso de vectores unidimensionales a funciones. 5. Vectores multidimensionales: matrices

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS

PROGRAMACIÓN ORIENTADA A OBJETOS PROGRAMACIÓN ORIENTADA A OBJETOS Operaciones con ficheros en Prof. Dr. Nicolás Luis Fernández García Departamento de Informática y Análisis Numérico Escuela Politécnica Superior Universidad de Córdoba

Más detalles

Sistemas de ficheros en Servidores de Información multimedia

Sistemas de ficheros en Servidores de Información multimedia Sistemas de ficheros en Servidores de Información multimedia 2º Ingeniero Técnico de Telecomunicación Imagen y Sonido Departamento de Ingeniería Telemática Universidad Carlos III de Madrid 2 Indice Concepto

Más detalles

sockets Flujo (SOCK_STREAM) Comunicación bidireccional Confiable (entrega garantizada) Información ordenada en el destino Datagrama (SOCK_DGRAM)

sockets Flujo (SOCK_STREAM) Comunicación bidireccional Confiable (entrega garantizada) Información ordenada en el destino Datagrama (SOCK_DGRAM) s s Comunicación punto-a-punto entre procesos Los s son los extremos de la comunicación Diferentes dominios UNIX: Entre procesos de un mismo equipo Internet: Entre procesos de diferentes equipos (TCP/IP)

Más detalles

LINUX - El intérprete de órdenes II

LINUX - El intérprete de órdenes II LINUX - El intérprete de órdenes II Objetivos: Se pretende introducir al alumno en el uso del intérprete de órdenes bash de LINUX. Ejecución de órdenes en el intérprete de órdenes Orden simple Como ya

Más detalles

Uso de archivos en C++

Uso de archivos en C++ CICLO 02-2013 UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLOGICOS ESCUELA DE COMPUTACION GUIA DE LABORATORIO Nº 11 Nombre de la práctica: Uso de archivos en C++ Lugar de ejecución: Laboratorio de Informática

Más detalles

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Prácticas de C++ Practica Nº 10 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante INDICE 1.1 EJERCICIO 1: MI PRIMER FICHERO EN BINARIO... 1 1.2 EJERCICIO 2: LEYENDO MI PRIMER FICHERO

Más detalles

Examen de Fundamentos de sistemas distribuidos

Examen de Fundamentos de sistemas distribuidos Examen de Fundamentos de sistemas distribuidos Tiempo total: 2 horas Problema: Programa: Rendezvous con semáforos(5 puntos) Utilizando como único mecanismo de sincronización los semáforos descritos en

Más detalles

Abelardo Pardo. Iria Estévez Ayres. Damaris Fuentes Lorenzo. Pablo Basanta Val. Pedro J. Muñoz Merino. Hugo A. Parada.

Abelardo Pardo. Iria Estévez Ayres. Damaris Fuentes Lorenzo. Pablo Basanta Val. Pedro J. Muñoz Merino. Hugo A. Parada. Arquitectura de sistemas Abelardo Pardo University of Sydney School of Electrical and Information Engineering NSW, 2006, Australia Autor principal del curso de 2009 a 2012 Iria Estévez Ayres Damaris Fuentes

Más detalles

1 Estructura básica de un programa C++

1 Estructura básica de un programa C++ Elementos básicos de un lenguaje de alto nivel: C++ CONTENIDOS 1. Estructura básica de un programa C++. 2. Tipos de datos simples. 3. Constantes y variables en C++. Declaración. 4. Operadores y expresiones.

Más detalles

#include ifstream descriptor ( nombre.extensión ); ofstream descriptor ( nombre.extensión );

#include <fstream.h> ifstream descriptor ( nombre.extensión ); ofstream descriptor ( nombre.extensión ); ARCHIVOS EN C++ = FLUJOS DE ENTRADA/SALIDA. Ejemplo: cin y cout Tipos de ficheros: DE TEXTO y BINARIOS Biblioteca de gestión de ficheros (a incluir en los programas) #include Apertura de ficheros

Más detalles

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS Caso 1: 1.- Necesitamos un cd o Dvd para grabar alguna de las versiones de livecd de Linux. 2.- Liga de una

Más detalles

Se guardan en archivos con extencion c y los cabezales con extension h

Se guardan en archivos con extencion c y los cabezales con extension h Se guardan en archivos con extencion c y los cabezales con extension h Tipos de Variables: Tipo Tamaño(bytes) Limite inferior Limite superior char 1 -- -- unsigned char 1 0 255 short int 2-32768 +32767

Más detalles

Práctica 6. Periféricos Avanzados. Programación del Disco Duro a través de la interfaz IDE. Lectura de la tabla de particiones.

Práctica 6. Periféricos Avanzados. Programación del Disco Duro a través de la interfaz IDE. Lectura de la tabla de particiones. Práctica 6. Periféricos Avanzados. Programación del Disco Duro a través de la interfaz IDE. Lectura de la tabla de particiones. Introducción. En esta práctica accederemos al disco duro a través de la funcion

Más detalles

Contenido. Capítulo 1. Introducción a lenguaje C 1

Contenido. Capítulo 1. Introducción a lenguaje C 1 Contenido Capítulo 1. Introducción a lenguaje C 1 Introducción... 2 Qué es un lenguaje de programación?... 2 Tipos de lenguajes de programación... 2 Introducción a lenguaje C... 2 Historia de lenguaje

Más detalles

TEMA 3: EL LENGUAJE C: PRESENTACIÓN

TEMA 3: EL LENGUAJE C: PRESENTACIÓN TEMA 3: EL LENGUAJE C: PRESENTACIÓN Historia del lenguaje C Características del lenguaje C Estructura de un programa en C El editor de textos: elementos Funciones: de usuario y de librería Librerías de

Más detalles

Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C

Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C Directivas del procesador Main() { Declaraciones Definiciones proposiciones }

Más detalles

Unidad 7: Procesamiento de archivos en el lenguaje C

Unidad 7: Procesamiento de archivos en el lenguaje C Unidad 7: Procesamiento de archivos en el lenguaje C 1º de ASI Esta obra está bajo una licencia de Creative Commons. Autor: Jorge Sánchez Asenjo (año 2005) http://www.jorgesanchez.net email:info@jorgesanchez.net

Más detalles

ARCHIVOS de TEXTO en PASCAL

ARCHIVOS de TEXTO en PASCAL Apunte del curso ALGORITMOS y PROGRAMACIÓN (FI-UBA, Prof. Ing. F. J. LAGE, J. T. P. Ing. Z. CATALDI; A.T.P. Srta. A Pauluzzi, Sr. C Corradino, Sr. F Gómez ARCHIVOS de TEXTO en PASCAL Un archivo o fichero

Más detalles

Errores del Manejador de Archivo Errores del Compilador

Errores del Manejador de Archivo Errores del Compilador MAR DE BANDA # 2075 COLONIA COUNTRY CLUB GUADALAJARA, JAL, MEX. TEL. (33)35.85.03.03, FAX (33)35.85.04.04 EMAIL: soporte@multilan.com.mx WEB www.multilan.com.mx Errores del Manejador de Archivo Errores

Más detalles

Estructura de datos (arreglos) Vectores y Matrices

Estructura de datos (arreglos) Vectores y Matrices Apunte del curso PROGRAMACIÓN (FI-UBA,, J. T. P. Ing. Z. CATALDI; A.T.P. Srta. A Pauluzzi, Sr. C Corradino, Sr. F Gómez Estructura de datos (arreglos) Hasta aquí se han visto distintos tipos de estructuras

Más detalles

Tema 9. Vectores y Matrices

Tema 9. Vectores y Matrices Tema 9. Vectores y Matrices OBJETIVO En temas anteriores hemos declarado variables simples de tipo int, float, o de cualquier otro tipo simple. A menudo necesitaremos declarar una colección de variables,

Más detalles

Gestión de procesos en UNIX

Gestión de procesos en UNIX PROCESOS UNIX Gestión de procesos en UNIX Cada proceso sólo puede tener un flujo: el concepto proceso engloba todo Dos llamadas implicadas en la creación de procesos crear proceso cargar programa La relación

Más detalles

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016! INFORMÁTICA Práctica4. ProgramaciónbásicaenC. GradoenIngenieríaenElectrónicayAutomáticaIndustrial Curso2015H2016 v2.1(18.09.2015) A continuación figuran una serie de ejercicios propuestos, agrupados por

Más detalles

Preliminares. Tipos de variables y Expresiones

Preliminares. Tipos de variables y Expresiones Preliminares. Tipos de variables y Expresiones Felipe Osorio Instituto de Estadística Pontificia Universidad Católica de Valparaíso Marzo 5, 2015 1 / 20 Preliminares Computadoras desarrollan tareas a un

Más detalles

Administración de usuarios y grupos en Debian {Terminal}

Administración de usuarios y grupos en Debian {Terminal} Rocío Alt. Abreu Ortiz 2009-3393 Administración de usuarios y grupos en Debian {Terminal} Linux es un sistema multiusuario y permite que varios usuarios puedan acceder, incluso simultáneamente. Cada usuario

Más detalles

Tema 2: La clase string

Tema 2: La clase string : string Programación 2 Curso 2013-2014 Índice 1 Cadenas de caracteres en C 2 Entrada / salida 3 entre vectores de caracteres y string 4 5 Cadenas de caracteres en C En C, las cadenas de caracteres tienen

Más detalles

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial FUNDAMENTOS DE INFORMÁTICA º PRÁCTICA 4: Funciones y vectores CURSO 5/6 Área de Ingeniería de Sistemas y Automática ISA-UMH R-2-FI4v. FUNDAMENTOS DE INFORMÁTICA PRÁCTICA 4: Funciones y vectores curso 25-26

Más detalles

PRÁCTICA 5. SENTENCIAS DE CONTROL REPETITIVAS.

PRÁCTICA 5. SENTENCIAS DE CONTROL REPETITIVAS. PRÁCTICA 5. SENTENCIAS DE CONTROL REPETITIVAS. 1. Introducción. En esta práctica veremos todos los conceptos explicados en la segunda parte del Tema 5 de teoría: las Sentencias de Control Repetitivas,

Más detalles

Manejo de Archivos en Lenguaje C++

Manejo de Archivos en Lenguaje C++ SEP SEIT DGIT INSTITUTO TECNOLÓGICO DE NUEVO LAREDO DEPTO. DE SISTEMAS Y COMPUTACIÓN Manejo de Archivos en Lenguaje C++ Por: Ing. Bruno López Takeyas, M.C. http://www.itnuevolaredo.edu.mx/takeyas Email:

Más detalles

Práctica 2: Realización de una Alarma Temporizada Diseño de Sistemas Operativos U.L.P.G.C.

Práctica 2: Realización de una Alarma Temporizada Diseño de Sistemas Operativos U.L.P.G.C. Práctica 2: Realización de una Alarma Temporizada David Jesús Horat Flotats Índice I. Explicación del Programa desarrollado... 2 Programa Principal... 2 Variables Tarea que realiza Parámetros Movimiento

Más detalles

Mecanismos IPC System V

Mecanismos IPC System V Mecanismos IPC System V Ampliación de Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Mecanismos IPC System V: generalidades (1) Existen tres tipos de mecanismos IPC

Más detalles

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F)

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F) APRENDERAPROGRAMAR.COM LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F) Sección: Cursos Categoría: Curso básico de programación en lenguaje C desde

Más detalles

Generador de analizadores sintácticos BISON

Generador de analizadores sintácticos BISON Generador de analizadores sintácticos BISON PROCESADORES DE LENGUAJES 4 o Informática http://ccia.ei.uvigo.es/docencia/pl noviembre-2008 2008 ccia PL 1. Introducción Traduce la especificación de una gramática

Más detalles

Unidad III El lenguaje de programación C 1. 2. 3. 4. 5. 6. 7. 8.

Unidad III El lenguaje de programación C 1. 2. 3. 4. 5. 6. 7. 8. Unidad III 1. Introducción. 2. Breve historia del C. 3. Lenguajes de programación de alto nivel, bajo nivel y nivel medio. 4. Compiladores e intérpretes. 5. Compilación, enlace y generación de un programa

Más detalles

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria. Punteros Definición Un puntero es un dato que contiene una dirección de memoria. NOTA: Existe una dirección especial que se representa por medio de la constante NULL (definida en ) y se emplea

Más detalles

Los dispositivos de almacenamiento secundario pueden ser muy distintos (discos rígidos, memorias flash, DVD, magnetic tape)

Los dispositivos de almacenamiento secundario pueden ser muy distintos (discos rígidos, memorias flash, DVD, magnetic tape) Introducción El almacenamiento secundario es necesario para: - Almacenar gran cantidad de datos - Almacenar datos persistentes (válidos entre sesiones/reinicios) - Compartir datos (si la protección de

Más detalles

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS CONTENIDOS 1. Introducción a las cadenas 2. Definición 3. Declaración de cadenas 4. Inicialización de cadenas 5. Escritura y Lectura de datos tipo cadena 6. Funciones de manipulación de cadenas 7. Arrays

Más detalles

Administrador de File System FAT16 y FAT32

Administrador de File System FAT16 y FAT32 Administrador de File System FAT16 y FAT32 Julio Peralta, Lorena Ibaez, Mariano A. Carabajal, Matias D. Rotela, Patricia Gómez Dpto. de Ingeniería e Investigaciones Tecnológicas, Universidad Nacional de

Más detalles

Tema 1: Implementación del sistema de archivos

Tema 1: Implementación del sistema de archivos Tema 1: Implementación del sistema de archivos 1. Introducción 2. Implementación 3. Estructura del almacenamiento secundario Dpto. Tema Lenguajes 1: Implementación y Sistemas del Informáticos. sistema

Más detalles

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación Avanzada en C

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación Avanzada en C Rutinas de conversión. De enteros a caracteres. Ltoa. Long to Ascii. Pasar de un número en representación interna a una secuencia de caracteres, permite desplegar en la salida los valores de las variables

Más detalles

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos Tema 2 Memoria Dinámica 2.1 Datos estáticos y dinámicos Datos estáticos: su tamaño y forma es constante durante la ejecución de un programa y por tanto se determinan en tiempo de compilación. El ejemplo

Más detalles

Estructura de Datos: Archivos. Programacion I Mgter. Vallejos, Oscar A.

Estructura de Datos: Archivos. Programacion I Mgter. Vallejos, Oscar A. Archivo: Concepto Para poder acceder a determinada información en cualquier momento, se necesitará que ella esté depositada en soportes físicos los cuales la almacenan en forma permanente. Este es el caso

Más detalles

Un puntero no es más que una variable estática cuyo contenido es una dirección de memoria.

Un puntero no es más que una variable estática cuyo contenido es una dirección de memoria. Los punteros en C 1 Introducción Cómo se organiza la memoria asociada a un programa? Como una colección de posiciones de memoria consecutivas. En ellas se almacenan los distintos tipos de datos, que ocupan,

Más detalles

PROGRAMACIÓN EN C. PRÁCTICA 2: Operaciones con bits. Práctica 2: Índice. 2.1 Introducción 2.2 Representación de información binaria en C

PROGRAMACIÓN EN C. PRÁCTICA 2: Operaciones con bits. Práctica 2: Índice. 2.1 Introducción 2.2 Representación de información binaria en C PROGRAMACIÓN EN C PRÁCTICA 2: Operaciones con bits Práctica 2: Índice 2.1 Introducción 2.2 Representación de información binaria en C 2.3 Operando con bits en C 2.4 Máscaras 2.5 Desplazamientos 2.6 Ejercicios

Más detalles

Convivencia. Gestión del Sistema de Archivos

Convivencia. Gestión del Sistema de Archivos Convivencia Gestión del Sistema de Archivos Dra. Carolina Carolina Mañoso Mañoso Dpto. Dpto. Imformática Informática y y Automática.UNED Introducción Se necesitan tres condiciones para el almacenamiento

Más detalles

TEMA 7: EL SISTEMA DE ARCHIVOS

TEMA 7: EL SISTEMA DE ARCHIVOS TEMA 7: EL SISTEMA DE ARCHIVOS 1. Objetivos y funciones del sistema de archivos Sistema de archivos: Subsistema del S.O. encargado de la gestión de la memoria secundaria (concretamente del almacenamiento

Más detalles

LABORATORIO DE FTP. PRESENTADO POR: Diana Maritza Aragón Marta Moreno Luis Miguel Pérez. PRESENTADO A: Marcelo Utard Javier Bozzuto

LABORATORIO DE FTP. PRESENTADO POR: Diana Maritza Aragón Marta Moreno Luis Miguel Pérez. PRESENTADO A: Marcelo Utard Javier Bozzuto LABORATORIO DE FTP PRESENTADO POR: Diana Maritza Aragón Marta Moreno Luis Miguel Pérez PRESENTADO A: Marcelo Utard Javier Bozzuto ESCUELA DE GRADUADOS DE ELECTRÓNICA Y TELECOMUNICACIONES LABORATORIO DE

Más detalles

Paso de Borland Turbo C (bajo DOS) a Anjuta (Linux) 1.

Paso de Borland Turbo C (bajo DOS) a Anjuta (Linux) 1. Paso de Borland Turbo C (bajo DOS) a Anjuta (Linux) 1. Anjuta es un entorno de desarrollo de C que podemos encontrar en cualquier distribución de GNU/Linux. Si nuestra distribución no dispone de ella,

Más detalles

El Sistema Operativo Linux

El Sistema Operativo Linux Introducción El Sistema Operativo Linux La mayor parte de los ordenadores que existen en la actualidad están diseñados de forma que puedan ejecutar diversas tareas o programas. Es evidente, que si cada

Más detalles

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por

Más detalles

El lenguaje C: Elementos básicos del lenguaje

El lenguaje C: Elementos básicos del lenguaje Facultad de Ciencias Exactas, Ingeniería y Agrimensura Departamento de Sistemas e Informática Escuela de Electrónica Informática II El lenguaje C: Elementos básicos del lenguaje Este material debe utilizarse

Más detalles

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS Por Andrés Raúl Bruno Saravia Entrega Nº 5. Cómo declaramos una variable en Lenguaje C? En C siempre se deben declarar las variables.

Más detalles

LnxComm. Linux Communication. Fernando Pujaico Rivera

LnxComm. Linux Communication. Fernando Pujaico Rivera LnxComm Linux Communication Fernando Pujaico Rivera LnxComm : Linux Communication por Fernando Pujaico Rivera Copyright 2011 GPL (http://www.gnu.org/licenses/gpl.html)

Más detalles

Examen escrito de Programación 1

Examen escrito de Programación 1 Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 2 de septiembre de 2015 Se debe disponer sobre la mesa en lugar visible un documento

Más detalles

Tema 4. Gestión de entrada/salida

Tema 4. Gestión de entrada/salida Tema 4. Gestión de entrada/salida 1. Principios de la gestión de E/S. 1.Problemática de los dispositivos de E/S. 2.Objetivos generales del software de E/S. 3.Principios hardware de E/S. 1. E/S controlada

Más detalles