<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Señales archivos - Frexus</title>
	<atom:link href="https://www.frexus.dev/tag/senales/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.frexus.dev/tag/senales/</link>
	<description>Generando Valor Agreado</description>
	<lastBuildDate>Thu, 21 Dec 2023 13:34:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.frexus.dev/wp-content/uploads/2024/03/cropped-Captura-de-Pantalla-2022-12-26-a-las-15.52.42-32x32.png</url>
	<title>Señales archivos - Frexus</title>
	<link>https://www.frexus.dev/tag/senales/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">215529362</site>	<item>
		<title>Señales</title>
		<link>https://www.frexus.dev/post/senales/</link>
					<comments>https://www.frexus.dev/post/senales/#respond</comments>
		
		<dc:creator><![CDATA[Alfredo de Jesús Gutiérrez]]></dc:creator>
		<pubDate>Sun, 27 Aug 2023 13:15:59 +0000</pubDate>
				<category><![CDATA[post]]></category>
		<category><![CDATA[interrupciones]]></category>
		<category><![CDATA[programación en el shell]]></category>
		<category><![CDATA[Señales]]></category>
		<guid isPermaLink="false">https://www.frexus.dev/?p=2331</guid>

					<description><![CDATA[<p>Las señales, son mecanismos de comunicación asincrónica entre procesos o entre el núcleo y los procesos. Estas son utilizadas para notificar eventos o solicitar ciertas acciones. Señales Personalizadas: Se puede definir y enviar de forma personalizadas en los scripts; asignando nombres significativos. Manejo de Errores con Señales: Se puede utilizar, para manejar errores de manera más elegante. Por ejemplo, configurar un script para que se ejecute con una acción específica cuando se detecta un error. Señales en Programas de Larga Duración: En programas que se ejecutan durante un período prolongado, puede ser útil manejarlas adecuadamente, para realizar tareas de limpieza antes de la terminación. Ignorar Señales: En algunos casos, se puede querer que un script las ignere. Para ello utiliza el comando trap con una cadena vacía. Señales y Programas en Primer Plano: Estos son algunos aspectos adicionales relacionados con señales e interrupciones. La comprensión y el manejo adecuado de las son esenciales para construir scripts y programas robustos, confiables en entornos de línea de comandos.</p>
<p>La entrada <a href="https://www.frexus.dev/post/senales/">Señales</a> se publicó primero en <a href="https://www.frexus.dev">Frexus</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img fetchpriority="high" decoding="async" width="867" height="1300" src="https://www.frexus.dev/wp-content/uploads/2023/12/pexels-photo-2994331.jpeg" alt="señales photo of road signage" class="wp-image-2332" style="width:287px;height:auto" srcset="https://www.frexus.dev/wp-content/uploads/2023/12/pexels-photo-2994331.jpeg 867w, https://www.frexus.dev/wp-content/uploads/2023/12/pexels-photo-2994331-200x300.jpeg 200w, https://www.frexus.dev/wp-content/uploads/2023/12/pexels-photo-2994331-683x1024.jpeg 683w, https://www.frexus.dev/wp-content/uploads/2023/12/pexels-photo-2994331-768x1152.jpeg 768w" sizes="(max-width: 867px) 100vw, 867px" /><figcaption class="wp-element-caption">Photo by Athena on <a href="https://www.pexels.com/photo/photo-of-road-signage-2994331/">Pexels.com</a></figcaption></figure>
</div>


<p>Las señales, son mecanismos de comunicación asincrónica entre procesos o entre el núcleo y los procesos. Estas son utilizadas para notificar eventos o solicitar ciertas acciones.</p>



<p><strong>Señales Personalizadas:</strong></p>



<p>Se puede definir y enviar de forma personalizadas en los scripts; asignando nombres significativos.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># Definir una señal personalizada
Mi_Senal=USR1

trap 'echo "Se recibió la señal $Mi_Senal"' $Mi_Senal

# Enviar la señal personalizada
kill -USR1 $PID_del_Proceso
</pre>



<p><strong>Manejo de Errores con Señales:</strong></p>



<p>Se puede utilizar, para manejar errores de manera más elegante. Por ejemplo,  configurar un script para que se ejecute con una acción específica cuando se detecta un error.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># Manejo de errores con señales
trap 'echo "Error detectado, realizando acciones de recuperación"; exit 1' ERR

# Simular un error
comando_que_puede_fallar
</pre>



<p><strong>Señales en Programas de Larga Duración:</strong></p>



<p>En programas que se ejecutan durante un período prolongado, puede ser útil manejarlas adecuadamente, para realizar tareas de limpieza antes de la terminación.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># Manejo de señales en programas de larga duración
trap 'limpieza_antes_de_salir' EXIT
trap 'manejar_senal_SIGTERM' SIGTERM

limpieza_antes_de_salir() {
    echo "Realizando limpieza antes de salir..."
    # Otras acciones de limpieza
}

manejar_senal_SIGTERM() {
    echo "Recibida la señal SIGTERM, terminando de manera controlada..."
    exit 0
}

# Resto del script
while true; do
    # Código principal del programa
    sleep 1
done
</pre>



<p><strong>Ignorar Señales:</strong></p>



<p>En algunos casos, se puede querer que un script las ignere. Para ello utiliza el comando <code>trap</code> con una cadena vacía.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># Ignorar la señal SIGTERM
trap '' SIGTERM
</pre>



<p><strong>Señales y Programas en Primer Plano:</strong></p>



<ul class="wp-block-list">
<li>Cuando ejecutas un programa en primer plano y presionas <code>Ctrl+C</code>, el programa recibe la señal SIGINT. Puedes capturar esta señal para realizar acciones específicas antes de que el programa se cierre.</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># Manejo de la señal SIGINT en un script en primer plano
trap 'limpieza_antes_de_salir' SIGINT

limpieza_antes_de_salir() {
    echo "Recibida la señal SIGINT, realizando limpieza antes de salir..."
    # Otras acciones de limpieza
    exit 0
}

# Resto del script
while true; do
    # Código principal del programa
    sleep 1
done
</pre>



<p>Estos son algunos aspectos adicionales relacionados con señales e interrupciones. La comprensión y el manejo adecuado de las son esenciales para construir scripts y programas robustos, confiables en entornos de línea de comandos.</p>
<p>La entrada <a href="https://www.frexus.dev/post/senales/">Señales</a> se publicó primero en <a href="https://www.frexus.dev">Frexus</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.frexus.dev/post/senales/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2331</post-id>	</item>
	</channel>
</rss>
