rc.local

来源:互联网 发布:python sys.readline 编辑:程序博客网 时间:2024/05/14 06:35

rc.local在是系统启动后就执行,也就是说你没有登陆前就执行了

rc.local脚本只是一个在各运行级别里到rc.d目录的rc.local脚本的软链接而已,编号最大,所以被rc脚本执行时在各运行级别的初始化末尾进行。

在rc.local里设置的最好是系统级别而非用户级别的,因为启动脚本的初始化与用户无关(启动脚本初始化完成后,才进入用户登录界面)。与用户相关的最好设置shell的配置文件如~/.bash_profile。 

常见问题及解决方法:

 问题:我程序手动运行正常,收发数据正常,加载图标也可以显示
           但是我让程序自动运行,即电脑一开启就自动运行起来,图标加载不了(没显示),收不到数据了(同过ping可以知道网络是通的),程序自动运行是写进/etc/rc.local里,/程序路径名/./应用程序名称。

解决:

     把程序改成用守护进程在后台运行

     函数如下(直接在程序中应用该函数就可以实现程序后台运行):

/*
 * 初始化守护进程
 */
void init_daemon(void)
{
    pid_t pid;
    int i;
    if (pid = fork())
        exit(0);              /* 是父进程,结束父进程 */
    else if (pid < 0)
        exit(1);              /* fork失败 */
    setsid();                 /* 第一个子进程成为新的会话组和进程组组长 */
                              /* 并且与控制终端脱离 */
    if (pid = fork())
        exit(0);              /* 是第一个子进程,结束第一个子进程 */
    else if (pid < 0)
        exit(1);              /* fork失败 */
    /* 孙子进程不再是会话组长 */
    for (i = 0; i < NOFILE; ++i)
        close(i);             /* 关闭打开的文件描述符 */
    chdir("/root");            /* 改变工作目录到/root */
    umask(0);                 /* 重设文件创建掩模 */
    return;
}