向导工具生成http服务项目 windows编译运行正常 linux下链接错误
Closed this issue · 6 comments
版本: acl-3.6.1-6
使用wizard向导工具生成一个初始项目后 在linux编译运行
const char* addrs = NULL;
s_info("listen on: {}", addrs == NULL ? "NULL" : addrs);
// 开始运行
if (argc == 1 || (argc >= 2 && strcmp(argv[1], "alone") == 0)) {
// 日志输出至标准输出
acl::log::stdout_open(true);
// 禁止生成 acl_master.log 日志
acl::master_log_enable(true);
// 测试时设置该值 > 0 则指定服务器处理客户端连接过程的
// 会话总数(一个连接从接收到关闭称之为一个会话),当
// 处理的连接会话数超过此值,测试过程结束;如果该值设
// 为 0,则测试过程永远不结束
unsigned int count = 0;
// 测试过程中指定线程池最大线程个数
unsigned int max_threads = 100;
// 单独运行方式
if (argc >= 3) {
s_info("argc >= 3");
ms.run_alone(addrs, argv[2], count, max_threads);
}
else {
s_info("argc < 3");
// addrs为NULL就会从配置文件中读取
ms.run_alone(addrs, cfg_file, count, max_threads);
}
printf("Enter any key to exit now\r\n");
getchar();
}
else
{
s_info("else run_daemon");
// acl_master 控制模式运行
ms.run_daemon(argc, argv);
}
run_alone 方式执行正常.
run_daemon 方式启动失败
[root@iZwz904izv5zpji57f9mp0Z act]# chmod +x ahserver
[root@iZwz904izv5zpji57f9mp0Z act]# ./ahserver daemon
[2024-05-06 19:49:19.038][m_sink:I][t:2872203|main.cpp:33] init_spdlog end.
[2024-05-06 19:49:19.038][m_sink:I][t:2872203|aclmain.cpp:117] aclmain start
[2024-05-06 19:49:19.038][m_sink:I][t:2872203|aclmain.cpp:168] listen on: NULL
[2024-05-06 19:49:19.038][m_sink:I][t:2872203|aclmain.cpp:202] else run_daemon
Aborted (core dumped)
[root@iZwz904izv5zpji57f9mp0Z act]# ./ahserver daemon zhserver.cf
[2024-05-06 20:00:49.211][m_sink:I][t:2876347|main.cpp:33] init_spdlog end.
[2024-05-06 20:00:49.211][m_sink:I][t:2876347|aclmain.cpp:117] aclmain start
[2024-05-06 20:00:49.212][m_sink:I][t:2876347|aclmain.cpp:168] listen on: NULL
[2024-05-06 20:00:49.212][m_sink:I][t:2876347|aclmain.cpp:202] else run_daemon
Aborted (core dumped)
[root@iZwz904izv5zpji57f9mp0Z act]#
alone 的运行方式是命令行运行方式,而 daemon运行模式是在 acl_master 服务框架下运行的,所以不能以命令行方式运行 daemon方式。
run_daemon 服务框架下运行方式要怎么用呢,我想试一试,好像找不到示例。
如果不使用守护进程模式,生产环境使用是不是直接run_alone启动运行就可以了。
可以参考:https://acl-dev.cn/2023/06/10/using_master/ ,https://acl-dev.cn/2023/05/27/using_wizard/ ,将你写的应用服务部署在 acl_master 服务管理框架下;另外,一般建议生产环境使用 acl_master 管理服务程序,run_alone 模式一般用在开发及测试阶段。
看项目中acl_master 没有vs相关的工程文件,文档也没有windows平台的使用说明,是不是目前不支持windows平台, windows服务器上就只能用run_alone运行,或者用acl_proctl_deamon_init, acl_proctl_daemon_loop这些函数 自行实现守护进程
看项目中acl_master 没有vs相关的工程文件,文档也没有windows平台的使用说明,是不是目前不支持windows平台, windows服务器上就只能用run_alone运行,或者用acl_proctl_deamon_init, acl_proctl_daemon_loop这些函数 自行实现守护进程
是的,acl_master 只能运行在 Unix 平台上;在 windows 上 可以借助于 acl_proctl_daemon_xxx 类函数使用 alone 方式运行。
明白了,谢谢郑老师