突然间想到一个问题:自己写一个功能函数,比如闹铃,给其响的时间是某一时刻,每天系统开启后让系统自己调用闹铃功能,
到响铃时自动响铃,对其他的任何系统功能不造成影响,怎么办。
然后就随便写了一个函数测试了一下:
#include <unistd.h>
int main(void)
{
while( 1 );
return 0;
}
又写了一脚本haifeng.sh,在/etc/pofile文件里面添加了运行haifeng.sh,结果傻眼了,系统停在了while( 1 );起不来了。
搞好系统后想了一下,把上面的进程改成了守护进程:
#include <stdio.h>
#include <unistd.h>
int main(void)
{
pid_t ID;
int Fd;
ID = fork( );
if( ID == 0 )
{
ID = setsid( );
if( ID < -1 )
{
printf( "%s\r\n", strerror( errno ) );
exit( -1 );
}
chdir( "/" );
Fd = open( "/dev/null", O_RDWR, 0 );
if( Fd != -1 )
{
dup2( Fd, STDIN_FILENO );
dup2( Fd, STDOUT_FILENO );
dup2( Fd, STDERR_FILENO );
if( Fd > 2 )
{
close( Fd );
}
}
umask( 0027 );
while( 1 );
}
return 0;
}
呵呵呵,结果可以了,没有影响到系统的运行。
把上面的while部分用一实现铃声的监测功能就可以了,这样每次系统起来后就会运行/etc/profile文件,然后就会调用到上面的文件,文件父进程over了
,子进程成了父进程为init的守护进程,直到系统over,该进程才over。