rc.local

    技术2022-05-11  123

    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;}

     

     


    最新回复(0)