Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ServerApplication无法查看具有相对路径的文件_C++_C++11_Poco Libraries - Fatal编程技术网

C++ ServerApplication无法查看具有相对路径的文件

C++ ServerApplication无法查看具有相对路径的文件,c++,c++11,poco-libraries,C++,C++11,Poco Libraries,我有一个扩展ServerApplication的应用程序。与依赖服务器应用程序使用的预定义位置中的配置文件不同,我希望强制用户通过命令行标志传递文件路径: myapp-f path/to/my/file--daemon 我的问题是,使用--daemon标志时,我无法传递相对路径,因为ServerApplication无法看到文件,我需要传递完整路径:/path/to/My/file。如果未传递--daemon标志,则应用程序能够看到该文件 我知道,一旦应用程序后台监控,它会将其目录更改为/,但我

我有一个扩展ServerApplication的应用程序。与依赖服务器应用程序使用的预定义位置中的配置文件不同,我希望强制用户通过命令行标志传递文件路径:

myapp-f path/to/my/file--daemon

我的问题是,使用--daemon标志时,我无法传递相对路径,因为ServerApplication无法看到文件,我需要传递完整路径:
/path/to/My/file
。如果未传递
--daemon
标志,则应用程序能够看到该文件

我知道,一旦应用程序后台监控,它会将其目录更改为
/
,但我正在
ApplicationServer::initialize
中读取文件,并打印
应用程序的值。dir
显示正确的路径


这是一个bug还是我遗漏了什么?

application.dir与当前工作目录不同。事实上,Util::ServerApplication是根用户,这与默认的守护程序行为一致。

但是文档中说这是在初始化之间完成的,我认为这意味着调用
void ServerApplication::initialize(Application&self)
int ServerApplication::main(const vector&args)
。那么目录是什么时候更改的?它在哪里更改—“初始化完成后,但在进入main()方法之前”。我认为您将application.dir与当前工作目录混合在一起。它们不是一回事,application.dir是可执行文件所在的目录。如果只指定文件名,而不指定目录路径,则当前工作目录就是写入文件的位置。对不起,我不明白。初始化和main()不是我上面强调的两个方法吗?因为我在
initialize(Application&self)
中读取了文件,但此时应用程序已经移动到另一个目录。然后它没有移动到另一个目录,而是保留在“/”中。看看你的平台文档是怎么说的。我会接受这个答案,因为应用程序确实正在移动到另一个目录,但是文档不够清晰。将回顾正在发生的事情。