增加主从模式EXE启动模式
This commit is contained in:
@@ -9,7 +9,7 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
if(MSVC)
|
||||
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Build config types" FORCE)
|
||||
endif()
|
||||
# C++等级
|
||||
# C++等级
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
|
||||
set(FASTWEBCORE ${PROJECT_NAME}core)
|
||||
|
||||
@@ -41,7 +41,7 @@ size_t module::process::create(const std::string& filepath, const std::string& w
|
||||
}
|
||||
|
||||
size_t pid = 0;
|
||||
if (ylib::process::create(filepath, working_directory, vs_args, wait_close, show_window, &pid) == false)
|
||||
if (ylib::process::create(filepath, working_directory, vs_args, wait_close, show_window,nullptr,&pid) == false)
|
||||
return 0;
|
||||
return pid;
|
||||
}
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
#include <filesystem>
|
||||
#include "util/file.h"
|
||||
#include "util/strutils.h"
|
||||
#include "util/system.h"
|
||||
#include "slave.h"
|
||||
#define QUIT_WAIT std::cout << "Please exit after entering any character...";std::cin.get();return -1
|
||||
|
||||
void* start(const char* config_filepath)
|
||||
@@ -99,6 +101,36 @@ int main(int argc, char* argv[])
|
||||
QUIT_WAIT;
|
||||
}
|
||||
}
|
||||
else if (type == "start2")
|
||||
{
|
||||
if (ylib::file::exist(std::filesystem::absolute(value).string()))
|
||||
{
|
||||
app = start(std::filesystem::absolute(value).string().c_str());
|
||||
if (app == nullptr)
|
||||
return -1;
|
||||
while (true)
|
||||
system::sleep_msec(1000 * 60);
|
||||
}
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
else if (type == "fastwebmanager")
|
||||
{
|
||||
int flag = ylib::stoi(argv[2]);
|
||||
slave s("fastweb_shardmemory", flag);
|
||||
|
||||
app = start(argv[3]);
|
||||
if (app == nullptr)
|
||||
{
|
||||
s.write(1);
|
||||
return -1;
|
||||
}
|
||||
s.write(2);
|
||||
// 等待关闭信号
|
||||
s.wait();
|
||||
|
||||
return 0;
|
||||
}
|
||||
if (argc < 4) { ouput_help(); QUIT_WAIT; }
|
||||
|
||||
if (type == "create")
|
||||
@@ -113,5 +145,5 @@ int main(int argc, char* argv[])
|
||||
ylib::file::copy_dir("/usr/local/share/fastweb", path);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
53
tests/slave.cpp
Normal file
53
tests/slave.cpp
Normal file
@@ -0,0 +1,53 @@
|
||||
// MIT License
|
||||
// Copyright(c) 2024 FastWeb - fwlua.com - nianhua
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files(the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions :
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
// ## Additional Terms for Commercial Use
|
||||
// This software is licensed for personal, educational, and non - commercial use.
|
||||
// For commercial use or use within a company, organization, or institution, a
|
||||
// separate commercial license is required.To obtain a commercial license,
|
||||
// please contact
|
||||
// EMail:1585346868@qq.com
|
||||
// Mobile:17367918735
|
||||
// QQ:1585346868
|
||||
|
||||
#include "slave.h"
|
||||
#include "util/system.h"
|
||||
|
||||
|
||||
slave::slave(const std::string& name,int flag):m_flag(flag)
|
||||
{
|
||||
m_sm = std::make_unique<ylib::sharedmem>(false);
|
||||
if (m_sm->create(name, 128 * 2) == false)
|
||||
{
|
||||
std::cerr << m_sm->last_error() << std::endl;
|
||||
abort();
|
||||
}
|
||||
}
|
||||
slave::~slave()
|
||||
{
|
||||
m_sm->destory();
|
||||
}
|
||||
void slave::wait()
|
||||
{
|
||||
while ((*m_sm)[m_flag] == 0)
|
||||
system::sleep_msec(10);
|
||||
}
|
||||
|
||||
void slave::write(uchar data)
|
||||
{
|
||||
((char*)m_sm->mem())[m_flag+128] = data;
|
||||
}
|
||||
31
tests/slave.h
Normal file
31
tests/slave.h
Normal file
@@ -0,0 +1,31 @@
|
||||
#pragma once
|
||||
#include <tuple>
|
||||
#include <memory>
|
||||
#include "util/thread.h"
|
||||
#include "util/sharedmem.h"
|
||||
#include "net/udp_node.h"
|
||||
#include "base/error.h"
|
||||
/// <summary>
|
||||
/// 从设备
|
||||
/// </summary>
|
||||
class slave:public ylib::error_base
|
||||
{
|
||||
public:
|
||||
slave(const std::string& name,int flag);
|
||||
~slave();
|
||||
/// <summary>
|
||||
/// 等待
|
||||
/// </summary>
|
||||
void wait();
|
||||
/// <summary>
|
||||
/// 写入
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
void write(uchar data);
|
||||
private:
|
||||
std::string m_name;
|
||||
// 共享内存
|
||||
std::unique_ptr<ylib::sharedmem> m_sm;
|
||||
// 标记
|
||||
int m_flag = -1;
|
||||
};
|
||||
Reference in New Issue
Block a user