我有兴趣编写一个Vala程序来确定当前的操作系统并采取相应的行动(具体如何行动我还没有决定,但与这个问题无关)。所以我想知道的是在运行时如何在Vala程序中确定当前的操作系统(包括Linux的特定分发版)。如何在Vala程序中确定当前的操作系统(包括Linux中的特定分发版)?
0
A
回答
1
除非你正在编写系统级代码(如包管理器或操作系统配置代码),你不应该。一个更好的选择是使用已经为您抽象分发细节的库。
如果你非得有两种主要的方式做到这一点:
在构建时
这里构建系统应负责检测OS /分配,要么通过一个定义到编译器(如
-DDISTRO_UBUNTU
)或编写一个文件(可能从模板config.vala.in
替换,例如autotools有AC_CONFIG_FILES
设施来执行此操作)。在运行时
这里您的工具不检测本身时,它的运行。
哪个更适合您的应用是设计选择。
至于如何做到这一点有几件事情你可以检查:
uname -a
(或其他参数,见人UNAME)会给你当前正在运行的内核。lsb_release -a
(不适用于每个发行版,有时是可能具有软件包依赖关系的可选软件包)会为您提供有关正在运行的发行版和发行版的信息。在Debian/Ubuntu衍生产品上有一个名为
/etc/debian_version
的文件,它给出了当前安装的版本的指示。这些信息虽然不完全准确。有些人试图阅读
/etc/issue
,但这很危险,因为该文件可以由管理员/用户修改。您可以询问用户正在运行的操作系统。
还有一些os信息库,你可以使用。
0
您可以使用uname(2)系统调用(如何做,在瓦拉被作为练习留给用户),或读/proc/version
(见proc(5)),或读/etc/issues
或按照Linux Standard Base约定(如popen
的lsb_release -a
输出) 。
但由于延Mühlenhoffanswered,你不应该这样做,并避免编写代码依赖于某些特定的分布。
而一些用户可能想伪造或隐藏该信息(想到有人拥有一些“Linux From Scratch”系统)。
相关问题
- 1. 如何使用Node.js确定当前的操作系统
- 2. 如何确定当前操作系统在LibGDX中运行的语言?
- 3. 包括<queue>在Ubuntu操作系统的C++程序中
- 4. 如何从Lua脚本中确定系统的操作系统?
- 5. 确定.vimrc中的操作系统
- 6. 从Powershell确定操作系统版本,Linux和Windows
- 7. 如何区分node.js中的不同操作系统发行版?
- 8. 如何获取Ruby上的特定操作系统版本?
- 9. 如何确定编译rpm的操作系统版本?
- 10. 如何确定当前的操作系统在詹金斯管道
- 11. 如何确定预处理器中的操作系统和操作系统版本?
- 12. 如何获取Windows Phone的当前操作系统版本?
- 13. 的Android单一的应用程序特定的操作系统
- 14. 如何手动确定当前操作系统的CodePage和区域设置
- 15. AuthLogic - 如何确定整个系统中的当前用户ID?
- 16. 如何识别操作系统中的前台“应用程序”?
- 17. 在Firefox中开发特权应用程序操作系统
- 18. 如何在'make'中检查当前的操作系统是?
- 19. 如何在Windows中获得当前操作系统版本的描述?
- 20. 如何确定操作系统是否为C中的POSIX?
- 21. 在Windows操作系统中的pathos软件包操作系统
- 22. 特定于操作系统的应用程序
- 23. 在哪里包括文件存储 - Ubuntu Linux操作系统,GCC
- 24. 如何查找在特定时刻运行的Linux操作系统?
- 25. 如何开发Linux操作系统中的php环境
- 26. 如何在Scala中轻松获取当前操作系统的行分隔符?
- 27. 确定Azure云服务的客户操作系统版本
- 28. 使用Qt时,我是否必须在特定的操作系统上编译特定的操作系统?
- 29. 如何获取MSBuild中的当前操作系统?
- 30. Linux操作系统
相关:https://stackoverflow.com/questions/29634474/is-os-detection-possible-with-glib –
相关:https://stackoverflow.com/questions/1678842/is-there-any-way -to-发现,出其中Linux的分布,是使用的 –