Sinais em Linux
Você sabia que o comando kill não serve para apenas "matar" um processo? Esta é apenas uma de suas finalidades. Na verdade trata-se de comunicação por sinais, um IPC (InterProcess Communication) muito útil e simples de ser usado. Existem outros sinais que podem ser muito úteis, principalmente em programação C. Os exemplos deste artigo são todos em C.
Comunicações entre processos
O Linux possui diversas formas de realizar comunicação entre processos, também conhecido com IPC. Estas formas de comunicação se referem a processos em execução na mesma máquina, o que não inclui sockets ou RPC (são para comunicação entre máquinas distintas).
Dentre as técnicas de comunicação entre processos fornecidas pelo Linux, convém citar:
a) por memória compartilhada: através de diretivas shm* pode-se disponibilizar uma área de memória comum à vários processos. Simples: quando um processo quer enviar dados ao outro, põe na memória.
b) pipes: um método muito interessante onde se cria um canal bidirecional na tabela de descritores, como se fosse arquivo, mas não é (e não tem I/O). Quando você faz um ls -la | sort está usando pipe!
c) sinais: quando um processo quer sinalizar algo a outro processo. Ao contrário das demais nesta não se envia dados mas apenas um valor numérico.
Existem outras formas de comunicação como semáforos, fila de mensagens e até mesmo morte de filho, que é considerada uma comunicação. Se você digitar ipcs na linha de comando irá ver os canais de comunicação atualmente em uso (não sinais). Minha idéia é falar dos principais tipos de comunicação em diversos artigos, começando por sinais, até para desmistificar o comando kill. Usarei exemplo em C para Linux.
Dentre as técnicas de comunicação entre processos fornecidas pelo Linux, convém citar:
a) por memória compartilhada: através de diretivas shm* pode-se disponibilizar uma área de memória comum à vários processos. Simples: quando um processo quer enviar dados ao outro, põe na memória.
b) pipes: um método muito interessante onde se cria um canal bidirecional na tabela de descritores, como se fosse arquivo, mas não é (e não tem I/O). Quando você faz um ls -la | sort está usando pipe!
c) sinais: quando um processo quer sinalizar algo a outro processo. Ao contrário das demais nesta não se envia dados mas apenas um valor numérico.
Existem outras formas de comunicação como semáforos, fila de mensagens e até mesmo morte de filho, que é considerada uma comunicação. Se você digitar ipcs na linha de comando irá ver os canais de comunicação atualmente em uso (não sinais). Minha idéia é falar dos principais tipos de comunicação em diversos artigos, começando por sinais, até para desmistificar o comando kill. Usarei exemplo em C para Linux.
http://gravatai.ulbra.tche.br/~elgio/disciplinas/?MAT=VOL&DISC=OUTRAS
Estou melhorando os comentários dos mesmos.