文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>精灵进程

精灵进程

时间:2009-07-30  来源:famdestiny

精灵进程是一种生存周期很长的进程,它们常随系统启动而启动,在系统结束时结束。因为没有控制终端,所以说他们是在后台运行的。   一、如何编写精灵进程 1、首先调用fork,然后使父进程exit. 2、调用setsid以创建一个新的会话。 3、调用chdir将工作目录改为根目录。 4、将文件方式创建屏蔽字设为0.(umask(0);) 5、关闭不需要的文件描述字。   例子:  

#include <syslog.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>

int main()
{
    pid_t pid;
    if((pid = fork()) == 0)
    {
        setsid();
        chdir("/");
        umask(0);
        close(0);
        close(1);
        close(2);

        while(1)
        {
            sleep(1);
            syslog(LOG_USER, "hello world!\n");
        }
    }
    return 0;
}

 

二、出错记录

与精灵进程有关的最大的一个问题是如何处理出错信息。因为没有控制终端,所以不能写到标准出错输出上。svr4以及4.3+BSD都提供了对应的处理方式,详情可参见APUE第13章,这里只记录下4.3+BSD上的方法。

子从4.2+bsd以来,广泛地采用了BSD syslog设施。有三种方法产生记录消息:

  • 内核例程可以调用log函数。任何一个用户进程通过打开和读/dev/klog设备就可以读取这些消息。
  • 大多数用户进程(精灵进程)调用syslog函数以产生记录消息。这使消息发往UNIX域数据报套接口/dev/log
  • 进程还可以将数据发往消息记录主机的UDP端口514,这要求产生记录的进程显示地进行网络编程。

通常syslogd例程读取这三种形式的记录消息,此精灵进程读取/etc/syslog.conf配置文件,该文件决定了不同的消息发往何处。(openlog,syslog,closelog参见man手册)

三、/etc/syslog.conf语法

语法格式:

消息来源.紧急程度(tab这里必须空一个tab)处理方式

说明:

消息来源:如cron,dameon,kern,user......参见(man syslog.conf)

紧急程度:info,err,warn,crit......

处理方式:

  • 文件名(注意绝对路径),则写到该文件
  • @主机,发往指定主机的syslogd程序
  • /dev/konsole,发往本地机器屏幕上
  • *,发往所有用户终端
  • |程序,通过管道发往指定程序
相关阅读 更多 +
排行榜 更多 +
宝宝切水果安卓版

宝宝切水果安卓版

休闲益智 下载
儿童脑筋急转弯

儿童脑筋急转弯

休闲益智 下载
袭击现场2

袭击现场2

飞行射击 下载