我想重写我的库的一部分,以便在Flatpaks和其他沙盒环境中使用,这些环境可能对我的权限有限制。是否有办法确定该进程是否在这样的环境中?
yiytaume1#
经过一番研究,似乎有几种方法可以只用几行代码检测容器。对于Flatpak,设置了环境变量container。在AppImage上,设置了APPIMAGE env。对于快照,我找不到合适的方法,但似乎设置了几个环境变量:https://forum.snapcraft.io/t/environment-variables/7983在代码实现中,它很可能如下所示:
container
APPIMAGE
#include <stdlib.h> #include <stdbool.h> bool is_container(void) { if (getenv("container")) { /* flatpak */ return true; } else if (getenv("APPIMAGE")) { /* AppImage */ return true; } else if (getenv("SNAP")) { /* Snaps */ return true; } return false; /* No container detected */ }
1条答案
按热度按时间yiytaume1#
经过一番研究,似乎有几种方法可以只用几行代码检测容器。对于Flatpak,设置了环境变量
container
。在AppImage上,设置了APPIMAGE
env。对于快照,我找不到合适的方法,但似乎设置了几个环境变量:https://forum.snapcraft.io/t/environment-variables/7983在代码实现中,它很可能如下所示: