Diseño de Programas Distribuidos: Diseño orientado a la comunicación (Prog. con sockets) –Diseñar primero el protocolo. –Construir programas acorde al protocolo. Diseño orientado a la Aplicación (RPC) –Construir aplicaciones. –Dividir los programas y añadir protocolos de comunicación. RPC (Remote Procedure Call) : En unix es posible tener en ejecución un programa en C con varias funciones que pueden ser llamadas desde otro programas. Estos otros programas pueden estar corriendo en otros ordenadores conectados en red. Supongamos, por ejemplo, que tenemos un ordenador muy potente en cálculo matemático y otro con un buen display para gráficos. Queremos hacer un programa con mucho cálculo… Continuar leyendo


Socket designa un concepto abstracto por el cual dos programas (posiblemente situados en computadoras distintas) pueden intercambiar cualquier flujo de datos, generalmente de manera fiable y ordenada. Un socket es, como su propio nombre indica, un conector o enchufe. Con él podremos conectarnos a ordenadores remotos o permitir que éstos se conecten al nuestro a través de la red. En realidad un socket no es más que un descriptor de fichero un tanto especial. Recordemos que en UNIX todo es un fichero, así que para enviar y recibir datos por la red, sólo tendremos que escribir y leer en un fichero un poco especial. Ya… Continuar leyendo


Tuberías Una tubería (pipe, cauce o ‘|’) consiste en una cadena de procesos conectados de forma tal que la salida de cada elemento de la cadena es la entrada del próximo. Permiten la comunicación y sincronización entre procesos. Es común el uso de buffer de datos entre elementos consecutivos. Una tubería es unidireccional. La utilización de tuberías mediante el uso de la shell es “el pan nuestro de cada día”, cualquier administrador de sistemas medianamente preparado encadena comandos y comandos mediante tuberías de forma natural: cat /etc/passwd | grep bash | wc –lines Los comandos “cat”, “grep” y “wc” se… Continuar leyendo


Una señal es un «aviso» que puede enviar un proceso a otro proceso. El sistema operativo unix se encarga de que el proceso que recibe la señal la trate inmediatamente. De hecho, termina la línea de código que esté ejecutando y salta a la función de tratamiento de señales adecuada. Cuando termina de ejecutar esa función de tratamiento de señales, continua con la ejecución en la línea de código donde lo había dibujado. El sistema operativo envía señales a los procesos en determinadas circunstancias. Por ejemplo, si en el programa que se está ejecutando en una shell nosotros apretamos Ctrl-C, se está enviando una señal de terminación… Continuar leyendo


Para terminar con las funciones relacionadas con el manejo de ficheros veremos chmod(), chown() , stat() , readdir(), opendir(), scandir(). La función chmod() tiene el mismo uso que el comando del mismo nombre: cambiar los modos de acceso permitidos para un fichero en concreto. Por mucho que estemos utilizando C, nuestro programa sigue sujeto a las restricciones del Sistema de Ficheros, y sólo su propietario o root podrán cambiar los modos de acceso a un fichero determinado. Al crear un fichero, bien con creat() o bien con open(), éste tiene un modo que estará en función de la máscara de modos… Continuar leyendo


En linux tenemos dos grupos de funciones para lectura y escritura de ficheros. Las funciones open(), write(), read() y close() son de algo más bajo nivel y específicas de linux. Dichas funciones serán tratadas en este artículo y dejaré ejemplos de cómo abrir y escribir archivos binarios. Los que desean utilizar funciones que son estándar de C, les recomiendo que lean este artículo – Comencemos por crear un fichero. Existen dos maneras de abrir un fichero, open() y creat(). Antiguamente open() sólo podía abrir ficheros que ya estaban creados por lo que era necesario hacer una llamada a creat() para llamar a open() posteriormente. A día… Continuar leyendo


Este manual es ideal para aprender a programar en el lenguaje C bajo el sistema operativo Linux. Nivel de dificultad: Intermedio/Experto Al crear los artículos, asumo que ya tienen conceptos básicos de programación (sino lo tienen, recomiendo que visiten mi manual básico e intermedio de C++). Si tienen alguna duda, pueden dejar comentarios en los artículos, que con gusto los responderé. Índice: C en Linux – Introducción Argumentos y Estructuras de control en C – Linux Creación y duplicación de procesos en C (Parte I) – Linux Creación y duplicación de procesos en C (Parte II) – Linux Archivos en… Continuar leyendo


El lenguaje C tiene varias estructuras de control para bucles y bifurcaciones condicionales. Argumentos en C pasados por el sistema operativo: En este caso, si usas la consola linux tenés que compilar el programa: gcc -o nombre nombre.c y luego ejecutarlo: ./nombre holamundo 2 El paso de compilación y ejecución es el mismo para los siguientes ejemplos. Ingreso de datos a través del programa en ejecución: Ejemplo de If, While y Switch: Ejemplo de For y vectores:


GCC (GNU Compiler Collection): es el compilador creado por el proyecto GNU. Se trata de una colección de programas libres integrados capaces de compilar diversos lenguajes de programación, entre estos C, C++, Objective-C, Java, Ada y Fortran. GCC es utilizado en el desarrollo de la mayoría de programas libres. Especialmente, el núcleo Linux depende estrechamente de las funcionalidades de GCC. En la práctica, la abreviación GCC es utilizada para nombrar a tres entidades ligeramente diferentes: 1. la colección completa de compiladores. 2. la parte común a todos los compiladores. 3. el compilador en si. Para referirse exactamente a los compiladores… Continuar leyendo