找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4060|回复: 1

关于c++npv1多进程例子中的一点疑问

[复制链接]
发表于 2008-1-31 14:21:12 | 显示全部楼层 |阅读模式
namespace {
  extern "C" void sigterm_handler (int /* signum */) { /* No-op. */ }
}

// Register to receive the <SIGTERM> signal.
  ACE_Sig_Action sa ((ACE_SignalHandler)sigterm_handler,
                     SIGTERM);

上面代码在c++NPV1的第八章例子中出现,例子是为了说明  
Process_Per_Connection_Logging_Server 的情况
但是上面代码在其他地方调用并未体现出作用,请知道的人解释下,
另外fork方法执行的部分
Logging_Process *logger =
      new Logging_Process (prog_name_, logging_peer);
  ACE_Process_Options options;
  pid_t pid;
  pid = ACE_Process_Manager::instance ()->spawn (logger,
                                                 options);
  // If we came back with pid 0 from the spawn(), this is a
  // POSIX fork system - we are in the child process. Handle the
  // logging records, then exit.
  if (pid == 0) {
    acceptor().close ();
    handle_data (&logging_peer);
    delete logger;
    ACE_OS::exit (0);
  }
  logging_peer.close ();
  if (pid == -1)
    ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "spawn()"), -1);
  // See if there are any child processes that have
  // exited - reap their status and clean up handles held
  // open while the child executed.
  ACE_Process_Manager::instance ()->wait (0,
                                          ACE_Time_Value::zero);
  return 0;
}
是这一部分代码段吗:
if (pid == 0) {
    acceptor().close ();
    handle_data (&logging_peer);
    delete logger;
    ACE_OS::exit (0);
  }
感觉挺奇怪的。
 楼主| 发表于 2008-2-1 22:47:25 | 显示全部楼层
在群里面向大家请教了下,大致明白是怎么回事呢,SIGTERM是信号,对应的是对信号的处理函数,为空操作,至于为什么这写,我还真不知道,自己帮顶一下
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-11-23 12:38 , Processed in 0.019475 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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