Programación en lenguaje C bajo Linux
4. Creación de proceso demonio
Si ha escrito programas en la era DOS, entonces puede saber cuánto código tenemos que escribir para escribir un programa residente en memoria en DOS. Por el contrario, si. escriba un " Es muy fácil crear un programa de "memoria residente". Podemos hacerlo con sólo unas pocas líneas de código. De hecho, dado que Linux es un sistema operativo multitarea, podemos poner un programa en segundo plano para ejecución sin escribir código. Siempre que agreguemos el símbolo & SHELL después del comando, nuestro programa se ejecutará en segundo plano. Aquí "desarrollamos" un programa que verifica los correos electrónicos en segundo plano. nuestro buzón a una hora específica. Si se encuentra cuando tengamos correo, la alarma seguirá sonando (sonando a través del pequeño altavoz en el chasis. Hay una versión mejorada de esta función más adelante). p> La idea de crear un proceso en segundo plano: primero, el proceso padre crea un proceso hijo. Luego, el proceso hijo mata al proceso padre (¿no es despiadado? Todo el trabajo de procesamiento de señales es manejado por el proceso hijo).
#include
#include
#include
#include
#include
.#include
#include
/* para Linux La dirección de correo electrónico personal predeterminada es /var/spool/mail/nombre de inicio de sesión del usuario*/
#define MAIL "/var/spool/mail/hoyt"
/* Dormir 10 segundos*/
#define SLEEP_TIME 10
main(void)
{
pid_t niño
if((child=fork())==-1)
{
printf("Error de bifurcación:%s\n",strerror(errno));
salir(1);
}
else if; (niño>0)
mientras(1);
if(kill(getppid(),SIGTERM)==-1)
{
printf("Error de eliminación del padre:%s\n",strerror(errno))
exit(1); {
int mailfd;
mientras(1)
{
if((mailfd=open(MAIL,O_RDONLY))! =-1)
{
fprintf(stderr ,"%s","\007");
close(mailfd);
}
sleep(SLEEP_TIME);
}
}
}
Puedes crear su archivo de buzón en la ruta predeterminada y luego pruebe este programa. Por supuesto, hay muchos otros programas. Hay áreas que deben mejorarse. Mejoraremos este pequeño programa más adelante. Antes de ver mis mejoras, puedes intentar mejorarlo. Por ejemplo, deje que el usuario especifique la ruta del correo electrónico y el tiempo de suspensión, etc. Creo que puede hacerlo. Vamos, valiente explorador.
Ahora que hemos aprendido el contenido. En la sección de procesos, el proceso es un concepto muy importante y muchos programas utilizan procesos secundarios. ¡Crear un proceso secundario es el requisito básico de todo programador!