我有一个守护程序应用程序,它通过launchd运行并作为自己的用户运行。
使用Qt,我遇到了QFileInfo::exists的问题。如果文件位于用户的文件夹中,则该文件不可访问且exists()返回false。
守护进程需要知道给定的文件路径是否是文件的路径(如果存在),即使它位于属于另一个用户的文件夹中,但它不需要访问该文件。
显然,尝试在此实例中打开文件将失败,并且stat的文档指出:
通向该文件的路径名中列出的所有目录都必须是可搜索的
所以函数'stat'也是,access。
由于守护进程是用Qt开发的,创建一个单独的XPC助手应用程序也会成为一个问题,除非有人可以在没有XCode的情况下建议如何做到这一点!
为了安全起见,我真的不想以root身份运行守护进程,所以守护进程是否有任何方法可以正确检查文件是否存在,可能是通过将其添加到特定组,还是使用函数来自C,C ++或Objective-C?
请注意,作为“管理员”组的成员也无法允许访问该文件。