如何实现核心守护进程!!!!!!!!!!!

vctony 2004-10-08 09:09:41
通常所写的都是用户空间的守护进程,即这样的守护进程有可能会被换进或换出;而核心空间的守护进程是驻留于核心物理内存的,即这样的守护进程和内核一样是不换页的,其运行速率自然要高.

请问如何实现核心空间的守护进程,如果用写内核模块的方法实现有可能吗,要怎么写??
问题在于在內核空间不能象在用户空间一样调用fork();系统调用,可以吗?!

请高手指点!
谢谢!
...全文
484 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
沙沙的吹 2004-11-01
  • 打赏
  • 举报
回复
你可以给自己的内存加锁吗?听说锁定的内存就不会被换出去了
vctony 2004-10-20
  • 打赏
  • 举报
回复
我这里要实现的是驻留物理内存而不会被换出的进程!!!!!!!!!!!!
沙沙的吹 2004-10-13
  • 打赏
  • 举报
回复
在内核态就没有进程这个概念了,又何谈内核的守护进程呢?
当然,确实是有很多功能可以在内核种实现的,比如说网络的核心部分
tengulre 2004-10-12
  • 打赏
  • 举报
回复
是/etc/inittab中加入的程序吗?
hightech_csdn 2004-10-12
  • 打赏
  • 举报
回复
tonywxd (阿董):
你好!
我用上述函数daemon_init()起初是可以的,但是当增加功能后,程序代码增多后,就跑不起来了,这是为什么?
vctony 2004-10-11
  • 打赏
  • 举报
回复
用户空间的守护进程很简单:

int main()
{
if (!fork()) exit ();
else
{
do what you want to do....
}
}
hightech_csdn 2004-10-11
  • 打赏
  • 举报
回复
请教各位,我实现守护进程 -- 利用<<UNIX网络编程(第1卷)>>中的void daemon_init(const char *pname, int facility)函数。进程启动要么在执行fork时退出,要么是成功执行daemon_init后,在以后某处停止。这是为什么?
代码如下(我稍作了修改):
#include <syslog.h>

#define MAXFD 64

//extern int daemon_proc; /* defined in error.c */
#ifndef WIN32

void daemon_init(const char *pname, int facility)
{
int i;
pid_t pid;

if ( (pid = fork()) != 0)
exit(0); /* parent terminates */

/* 41st child continues */
setsid(); /* become session leader */

signal(SIGHUP, SIG_IGN);
if ( (pid = fork()) != 0)
exit(0); /* 1st child terminates */

/* 42nd child continues */
// daemon_proc = 1; /* for our err_XXX() functions */

chdir("/"); /* change working directory */

umask(0); /* clear our file mode creation mask */

for (i = 0; i < MAXFD; i++)
close(i);

openlog(pname, LOG_PID, facility);
}

#endif
sharkhuang 2004-10-11
  • 打赏
  • 举报
回复
fork childen process。kill father process
  • 打赏
  • 举报
回复
kernel thread
vctony 2004-10-11
  • 打赏
  • 举报
回复
to :freasy(崔沙)
你说的一点没错,可是在内核模块中是如何实现守护进程的呢?!
用户空间的实现方法恐怕是不管用了。
沙沙的吹 2004-10-08
  • 打赏
  • 举报
回复
除非你实现为内核模块
不然怎么能不被换出去呢?

4,468

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧