找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 6108|回复: 4

书里的一个例子不知道怎么用

[复制链接]
发表于 2009-8-6 09:28:48 | 显示全部楼层 |阅读模式
#include "ace/os.h"
#include "ace/ace.h"
#include "ace/process.h"
int main(int argc,char *argv[])
{
        ACE_Process_Options options;
        FILE *fp = 0;
        char *n_env = 0;
        int n;
        if (argc == 1)
        {
                n_env = ACE_OS::getenv("factorial");
                n = n_env == 0 ? 0 : atoi(n_env);
                options.command_line("%s %d",argv[0],n == 0 ? 10 : n);
                const char *working_dir = ACE_OS::getenv("working_dir");
                if (working_dir) options.working_directory(working_dir);
                fp = fopen("factorial.log","a");
                options.setenv("program=%s",ACE::basename(argv[0]));
        }
        else{
                fp = fopen("factorial.log","a");
                if (atoi(argv[1])==1){
                        fprintf(fp,"[%s|%d]:base case\n",
                                ACE_OS::getenv("program"),ACE_OS::getpid());
                        fclose(fp);
                        return 1;
                }
                else{
                        n =atoi(argv[1]);
                        options.command_line("%s %d",argv[0],n-1);
                }
        }
        ACE_Process child;
        child.spawn(options);
        child.wait();
        int factorial = n*child.exit_code();
        fprintf(fp,"[%s|%d]: %d! == %d\n",
                ACE_OS::getenv("program"),ACE_OS::getpid(),
                n,factorial);
        fclose(fp);
        return factorial;
};

这个程序有什么输入参数吗,我没有输入参数,会挂。
发表于 2009-8-6 10:35:26 | 显示全部楼层
不输入参数就要设置环境变量。否则就输入参数比如程序叫test,就输入test 1
发表于 2010-4-7 15:53:53 | 显示全部楼层
我是在VS2008调试,你选属性-》配置属性-》调试,里面可以添加环境变量
发表于 2010-4-9 13:54:08 | 显示全部楼层
做一下单步调试。
发现你的如果没有参数
你的代码中有
atoi(argv[1])==1
这里似乎有问题。
发表于 2010-7-13 21:38:54 | 显示全部楼层
int main(int argc,char *argv[])

估计是这里,ACE需要初始化一些全局变量,通常通过ACE::init()来实现,还有就是退出时,需要调用ACE::fini()来回收全局变量。如果你使用一般C++入口函数,这些工作需要自己来做,幸运的是ACE为我们提供了帮助,你可以把这句改成
int ACE_TMAIN(int argc, ACE_TCHAR * argv[])
试试。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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