En Java, así como en cualquier lenguaje de programación, la principal estructura de ejecución de instrucciones es la estructura secuencial, en la que cada comando, cada línea, cada instrucción se ejecuta una después de otra. El código se ejecuta de arriba hacia abajo y cada línea es ejecutada según el orden en que halla sido escrita por el programador. Los Hilos o los “Threads” en Java, son basicamente una forma de poder ejecutar varios procesos simultáneamente en nuestros programas en Java. Un ejemplo de la utilización de hilos es tener un hilo atento a la interfaz gráfica (iconos, botones, ventanas), mientras otro hilo hace… Continuar leyendo


Sockets 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. Los sockets de Internet constituyen el mecanismo para la entrega de paquetes de datos provenientes de la tarjeta de red a los procesos o hilos apropiados. Un socket queda definido por un par de direcciones IP local y remota, un protocolo de transporte y un par de números de puerto local y remoto. Protocolos de Transporte « UDP (User Datagram Protocol): Es un protocolo no orientado a conexión. Es decir cuando una maquina… 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


Repaso de las funciones: Fork y wait: Para crear nuevos procesos, el UNIX dispone únicamente de una llamada al sistema, fork, sin ningún tipo de parámetros. Su prototipo es int fork(); Al llamar a esta función se crea un nuevo proceso (proceso hijo), idéntico en código y datos al proceso que ha realizado la llamada (proceso padre). Los espacios de memoria del padre y el hijo son disjuntos, por lo que el proceso hijo es una copia idéntica del padre que a partir de ese momento sigue su vida separada, sin afectar a la memoria del padre; y viceversa. Siendo más… Continuar leyendo


Una situación muy habitual dentro de un programa es la de crear un nuevo proceso que se encargue de una tarea concreta, descargando al proceso principal de tareas secundarias que pueden realizarse asíncronamente o en paralelo. Linux ofrece varias funciones para realizar esto: system(), fork() y exec(). Con system() nuestro programa consigue detener su ejecución para llamar a un comando de la shell (“/bin/sh” típicamente) y retornar cuando éste haya acabado. Si la shell no está disponible, retorna el valor 127, o –1 si se produce un error de otro tipo. Si todo ha ido bien, system() devuelve el valor… 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