QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1090|回复: 0

问个linux下进程调度相关的问题,有一小段代码,谢谢的说

[复制链接]
发表于 2006-8-12 10:08:15 | 显示全部楼层 |阅读模式
2.4下见过这样一段代码,守护进程循环调用一个进程表(单向链表),然后创建子进程去执行进程表中指令,问一下这样不是不停的创建新进程吗?内存应该很快就没了啊,可是实际中该程序运行良好,代码太长,偶把结构大概给出来,麻烦大侠帮忙分析一下机理
守护进程 int main(argc,argv)
{
   ........
   while(1) {
     run();
   }
   return 0;
}
int run()
{
  temp=链表头指针;
  while(temp!=0){
  if ( waitpid( tmp->pid, 0, WNOHANG ) != 0 ) {
  tmp->pid = fork();
  if ( tmp->pid < 0 ) {
     .............
     }
  else if ( tmp->pid == 0 ) {
     execv( tmp->path, tmp->param );
     exit( -1 );
     }
  }  
temp=下一项;
}
}
进程表中所有指令程序格式大概如下:
int command()
{
  ...........
  while(1) {
    sleep(10);
    do something;
    if(something)
       exit(1);
    sleep(1);
    }
  return 0;
}
整个程序结构基本就这样,比较纳闷,守护进程应该是不停的创建子进程,然后内存不够或进程数到上限,最后挂掉的啊,偏偏程序运行良好,盼望高手能指点迷津,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-22 22:55 , Processed in 0.043867 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表