See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Señal (informática) - Wikipedia, la enciclopedia libre

Señal (informática)

De Wikipedia, la enciclopedia libre

Una señal es una forma limitada de comunicación entre procesos empleada en Unix y otros sistemas operativos compatibles con POSIX. En esencia es una notificación asíncrona enviada a un proceso para informarle de un evento. Cuando se le manda una señal a un proceso, el sistema operativo modifica su ejecución normal. Si se había establecido anteriormente un procedimiento (handler) para tratar esa señal se ejecuta éste, si no se estableció nada previamente se ejecuta la acción por defecto para esa señal.

Tabla de contenidos

[editar] Envío de señales

  • Al escribir Ctrl-C en el shell donde se ejecuta un proceso el sistema le envía una señal SIGINT, que por defecto causa la terminación del proceso. Ctrl-Z hace que el sistema envíe una señal SIGTSTP que suspende la ejecución del proceso.
  • La llamada al sistema kill enviará la señal especificada al proceso.
  • Excepciones como la división por cero o la violación de segmento generan señales.
  • Los procesos pueden enviar señales tanto a otros procesos como a sí mismos usando kill(2) (por supuesto con los permisos necesarios) por ejemplo kill(pid,SIGUSR1) siendo pid el identificador del proceso al cual deseamos enviar el signal SIGUSR1.
  • El núcleo puede generar una señal para informar de un evento a un proceso. Por ejemplo, SIGPIPE se genera cuando un proceso escribe en una tubería que había sido cerrada por el proceso que leía de ella.

[editar] Manipulación de señales

Los manipuladores de señales se establecen mediante la llamada al sistema signal(). Si hay un manipulador de señal para una señal dada se invoca y, si no lo hay, se usa el manipulador por defecto. El proceso puede especificar también dos comportamientos por defecto sin necesidad de crear un manipulador: ignorar la señal (SIG_IGN) y usar el manipulador por defecto (SIG_DFL). Hay dos señales que no pueden ser interceptadas ni manipuladas: SIGKILL y SIGSTOP.

La manipulación de señales es vulnerable a condiciones raras, pues las señales son asíncronas y puede ocurrir que llegue otra señal (incluso del mismo tipo) al proceso mientras transcurre la ejecución de la función que manipula la señal. Puede usarse la función sigprocmask para desbloquear la entrega de señales.

Las señales pueden interrumpir una llamada al sistema en proceso, dejando en manos de la aplicación la gestión del PCLSRing.

[editar] Lista de señales

La Single Unix Specification especifica las siguientes señales, definidas en <signal.h>:

SIGABRT - proceso abortado
SIGALRM - señal de alarma
SIGBUS - error en el bus "access to undefined portion of memory object"(SUS)
SIGCHLD - proceso hijo terminado, detenido (*o que continúa)
SIGCONT - continúa si estaba parado
SIGFPE - excepción de coma flotante -- "erroneous arithmetic operation"(SUS)
SIGHUP - hangup
SIGILL - instrucción ilegal
SIGINT - interrupción
SIGKILL - muerto
SIGPIPE - escribir a la pila sin leer
SIGQUIT - terminar
SIGSEGV - segmentation violation
SIGSTOP - detiene la ejecución temporalmente
SIGTERM - terminación
SIGTSTP - parada de terminal
SIGTTIN - proceso en segundo plano intentando leer ("in")
SIGTTOU - proceso en segundo plano intentando escribir ("out")
SIGUSR1 - user defined 1
SIGUSR2 - user defined 2
*SIGPOLL - pollable event
*SIGPROF - el temporizador copiador expiró
*SIGSYS - mala llamada al sistema
*SIGTRAP - trace/breakpoint trap
SIGURG - datos importantes disponibles en socket
*SIGVTALRM - "virtual timer expired"(SUS)
*SIGXCPU - excedido límite de tiempo de CPU
*SIGXFSZ - excedido límite de tamaño de fichero

Nota: el asterisco significa que es una extensión de X/Open System Interfaces (XSI). Las frases entre comillas y seguidas de (SUS) son la forma de escribirlas del SUS[1].

[editar] Enlaces externos


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -