找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3372|回复: 1

日志的参数问题

[复制链接]
发表于 2008-1-11 11:08:43 | 显示全部楼层 |阅读模式
我想通过配制参数的方式定义ACE的输出方式,结果在程序退出的时候,出现异常。经调试如果参数是通过配制文件读取,运行结果结果正确,但退出时异常。通过程序写死时,运行正常,退出也正确。整个工程代码见附件。
    std::string Value = CIniFile::GetValue("nParaNum","LogControl",FileName);
num = ACE_OS::atoi(Value.c_str());      
if (num < 1)   //如果小于1,则一切OK
{
       l_argv[0] = (ACE_TCHAR *)ACE_TEXT ("Logging_Strategy_Class");
       l_argv[1] = (ACE_TCHAR *) ACE_TEXT("-w");
       l_argv[2] = (ACE_TCHAR *) ACE_TEXT ("-fSTDERR");
    l_argv[3] = (ACE_TCHAR *) ACE_TEXT ("-slog/test.log");
       l_argv[4] = 0;
      if (parse_args (4, l_argv) == -1)
        ACE_ERROR_RETURN ((LM_ERROR,
                           "Invalid command-line parameters.\n"),
                          false);
      argc = 4;
   
}else     //如果num > 0 ,则运行正确,但退出异常
{
  if (num > 9)
  {
   num = 9;
  }
       l_argv[0] = (ACE_TCHAR *)ACE_TEXT ("Logging_Strategy_Class");
  for (int i = 0; i < num ; i++)
  {
   ACE_OS::sprintf(szPara,"Para%d",i);
   Value = CIniFile::GetValue(szPara,"LogControl",FileName);
             l_argv[i+1] = new ACE_TCHAR[Value.size()+1];
   ACE_OS::strcpy(l_argv[i+1],ACE_TEXT(Value.c_str()));

  }
  l_argv[num+1] = 0;
  argc = num+1;
      if (parse_args (num, l_argv) == -1)
        ACE_ERROR_RETURN ((LM_ERROR,
                           "Invalid command-line parameters.\n"),
                          false);
}
 楼主| 发表于 2008-1-11 11:08:54 | 显示全部楼层
原来是配制参数不太对
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-11-22 07:07 , Processed in 0.030481 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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