在Linux下编写/配置应用程序的正确方法是什么,它始终运行并提供外部请求(TCP,数据库,文件系统,任何类型).
我特意不要调用这个守护进程,因为它可能意味着我不想在Linux环境中使用它.
我已经阅读了多个主题,包括:
但是没有一个能够充分比较使用哪种方法.
我看到以下选项:
但是他们中的哪一个是要走的路.或者如果它们都可以使用,那么Linux中的守护进程是什么?
我正在寻找相当于在Windows下运行应用程序作为服务(任何.exe都可以自动生成使用sc作为服务运行).
我的要求如下:
我是应用程序的作者,但不希望改变它以处理守护进程.
我的猜测是编写自定义init.d脚本,然后从/etc/init.d/functions调用daemon()函数.我对吗?
我有以下代码:
class Class
{
public:
std::string Read()
{
std::lock_guard<std::mutex> lock(mutex_);
return data_;
}
private:
std::mutex mutex_;
std::string data_;
};
Run Code Online (Sandbox Code Playgroud)
首先执行什么 - data_由于函数的原因,是否会在堆栈上创建字符串的本地副本(临时),然后锁将释放互斥锁,还是以其他方式?
如果是这样,以下行是否解决了问题?
return std::string(data_);
Run Code Online (Sandbox Code Playgroud)
Mutex应该保护并发读/写data_,以便这些操作不会干扰.