Todo empezó un caluroso día del mes pasado. Cuando, estando trabajando, utilizando Firefox como navegador encuentro información interesante acerca de mi actual proyecto. Aunque no era el único programa en ejecución, el hecho es que tenía toda la RAM llena, y unas 20 ventanas abiertas. De repente, recibo una llamada de teléfono y tengo que ponerme inmediatamente con otra cosa. La página que tengo en mi navegador, es muy pesada, y el ordenador empieza a ir un poco lento, además, el ventilador de la CPU se pone en marcha, muy rápido y de manera muy ruidosa, haciendo que, hasta mi interlocutor se da cuenta de ello.… Leer artículo completo
Pausar aplicaciones haciendo click en la ventana correspondiente
Conociendo el proceso que me ha enviado una señal (signal)
Hace tiempo hablábamos de capturar señales, aunque en ocasiones, es necesario saber quién me envía esa señal, si por ejemplo nos envían un SIGINT o SIGTERM, tal vez queremos saber qué proceso nos quiere muerto y qué usuario lo ha invocado. O tal vez estamos esperando una señal de control (SIGUSR1, por ejemplo) por parte de un proceso cliente específico.
El problema es que por nuestro modo actual de direccionar señales (con signal(señal, funcion)) sólo comunicamos el número de señal que se ha recibido, sin más información.… Leer artículo completo
Interfaces Gráficos en Linux con gtkmm 1 [Hola Mundo]
Aunque a veces, cuando nos dedicamos a programar en Linux, recurrimos a la consola (ya que muchos de nosotros tenemos siempre una abierta), a veces es interesante crear un Interfaz Gráfico de Usuario (en inglés GUI, Graphical User Interface), para ello, si no queremos complicarnos demasiado tenemos dos opciones: Gtk+ y Qt.
Bien, vamos con Gtk+, está muy extendido y escrita en C, aunque aquí hablaré de una interfaz de Gtk+ para C++ llamada gtkmm, que nos proporciona las clases necesarias para jugar con la potencia de Gtk+ de una forma un poco más amigable (ya que podemos crear un botón, una etiqueta o una ventana como objetos de C++, hará todo un poco más intuitivo).… Leer artículo completo
Controlar señales
A veces, se nos presenta la necesidad de modificar el comportamiento de nuestro programa por ejemplo cuando el usuario pulse Control+C, o cuando terminemos nuestra aplicación, o cuando… dividamos por 0, o más cosas… podemos ver un listado de las diferentes señales con:
man 7 signal
Podemos utilizar para probar este programa (signals.c):
… Leer artículo completo1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
void salir(int recib);
void alarma(int que);
int tmp=0;
int divi=5;
int main()
{
signal(SIGINT, salir); /* Control+C */
signal(SIGKILL, salir); /* kill */
signal(SIGFPE, salir); /* división por 0 */
signal(SIGALRM, alarma); /* alarma */
signal(SIGUSR1, alarma); /* definido por el usuario */
int numero=4;
while (1)
{
usleep(1000); /* Le damos un respiro a la CPU mientras estamos en el bucle */
tmp++;
if (tmp%1000==0)
{
tmp=tmp/divi;
printf("tmp = %d\n", tmp);
}
}
}
void salir(int recib)
{
printf("Salgo porque ");
switch (recib)
{
case SIGINT: printf("has pulsado Control+C...
Últimos comentarios