operating-system - 除了通过环境变量之外,gnuplot 还能知道哪个操作系统是主机吗?

标签 operating-system environment-variables gnuplot

我需要在 gnuplot 中开发一个可在 Windows 和 Linux 下使用的脚本。

为了决定我拥有哪个操作系统,我写道

OS=system("echo %OS%")
print "OS = ", OS
if (OS eq "Windows_NT") \
  ...; \
else \
  ...;

并且成功了。

是否有一种替代方法,gnuplot 原生的,不依赖于环境变量?

最佳答案

您可以使用内部变量GPVAL_SYSNAME:

gnuplot> print GPVAL_SYSNAME
Windows_NT-10.0

在 Windows 上,在 eval.c 中初始化为:

ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osvi);
snprintf(s, 30, "Windows_NT-%ld.%ld", osvi.dwMajorVersion, osvi.dwMinorVersion);
fill_gpval_string("GPVAL_SYSNAME", s);

为了测试该字符串是否以“Windows”开头,可以使用 Gnuplot 的内部 strstrt 函数:

if (strstrt(GPVAL_SYSNAME, "Windows") == 1) {
   ....
}

此外,还有GPVAL_MACHINE:

gnuplot> print GPVAL_MACHINE
x86_64

关于operating-system - 除了通过环境变量之外,gnuplot 还能知道哪个操作系统是主机吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53647279/

相关文章:

c - 系统调用应该在上下文切换之前完成吗

memory-management - 页大小和页表条目大小有什么区别

linux - Linux中的大写和小写内置变量有什么区别,如HOME和eval

variables - 是否可以将 OS env 变量放入 postman 中?

gnuplot - 向 3D gnuplot 图表添加垂直线

gnuplot - 使用 gnuplot 绘制傅立叶展开式

pdf - Gnuplot:如何通过调整页面大小和其他参数来避免PDF中的白边

operating-system - 操作系统权限级别与硬件权限级别

c - 如何在操作系统级别实现 sleep ?

macos - Mac OSX 上的 PostgreSQL 环境文件?