全局系统信息

为了写出最通用的 Wolfram 语言程序,有时需要得到有关运行程序的系统的全局信息.

因此,例如,要判断程序是否应该调用诸如 NotebookWrite 的函数时,就要确定该程序是否在使用这个笔记本前端的一个 Wolfram 语言会话中运行. 通过检测全局变量 $Notebooks 就能达到以上目的.

$Notebooks一个笔记本前端是否正在使用

确定一个笔记本前端是否正在使用.

Wolfram 语言通常被交互式地使用,它也可以按批处理模式运行,例如,从一个文件得到输入,再将结果写到另一个文件中去. 在这种情况下,一个程序不可能期望来自用户的交互式输入.

$BatchInput输入是否按批处理模式给出
$BatchOutput输出是否按批处理模式给出,没有添加标签等

指定批处理模式运行的变量.

Wolfram 语言内核是在所用计算机操作系统下运行的一个进程. 在 Wolfram 语言中有几个全局变量,可以用来确定这个进程的特点和它的环境.

$CommandLine用来启动 Wolfram 语言内核的原始命令行
$ParentLink指定启动内核程序的 WSTP LinkObject(内核直接启动时为 Null
$ProcessID操作系统分配给 Wolfram 系统内核进程的 ID
$ParentProcessID调用 Wolfram 系统内核的进程 ID
$UserName运行 Wolfram 系统内核的用户登录名
Environment["var"]由操作系统定义的变量值

与 Wolfram 语言内核进程有关的变量.

在一个特定的 Wolfram 语言会话中使用了诸如 x 的变量时,可能要求它与另一个 Wolfram 语言会话中的 x 相同或不同. 为了保证不同会话中的对象不同,Wolfram 语言支持 $SessionID 变量,它利用开始时间、进程 ID和机器 ID 等对每一个 Wolfram 语言会话给出不同的值,不论这些会话是在同一机器或不同的机器上运行.

$SessionID对每一个 Wolfram 语言会话设置的不同且唯一的编号

每一个 Wolfram 语言进程的唯一编号.

Wolfram 语言提供了判断运行内核版本的各种不同的全局变量. 这一点在编写利用一些功能(如第6版中的新功能)的程序时是重要的. 可以用 $VersionNumber 去检查这些功能是否可用.

$Version给出所用 Wolfram 语言版本的字符串
$VersionNumberWolfram 系统的内核版本号(如
$ReleaseNumber在所用计算机系统上 Wolfram 系统内核的版本号
$CreationDate该 Wolfram 系统版本创建的日期(用 DateList 格式)

指定所用 Wolfram 语言版本的变量.

Wolfram 语言的设置是尽量与所运行的计算机相独立. 然而,如果要访问所用计算机系统外部各个方面,就需要找到它的特征.

$System描述所用计算机系统的完全字符串
$SystemID指定所用计算机系统的简短字符串
$ProcessorType所给计算机系统的处理器类型
$MachineType所用计算机系统的总类型
$ByteOrdering所用计算机系统上产生字节的排序约定
$OperatingSystem所用的基本操作系统
$SystemCharacterEncoding所用操作系统编码的默认原始字符

给出所用计算机特征的变量.

Wolfram 语言使用 $SystemID 的值去标记不同计算机系统下版本文件的目录,参见 "Reading and Writing Wolfram Language Files: Files and Streams""Portability of WSTP Programs" 中讨论的. $SystemID 相同的计算机系统一般是二进制兼容的.

$OperatingSystem 的值为 或者 等. 通过测试 $OperatingSystem 可以确定一个外部程序是否可在这个计算机上运行.

这里给出用来计算输入的计算机系统的一些特征.
In[1]:=
Click for copyable input
Out[1]=
$MachineAddresses当前 IP 地址列表
$MachineName正在运行 Wolfram 语言的计算机名
$MachineDomains计算机所在的当前网络域
$MachineIDWolfram 系统赋给该计算机的唯一 ID

识别 Wolfram 语言运行的计算机的变量.

$ActivationKeyWolfram 语言运行所需的激活密钥
$LicenseExpirationDate许可证过期的日期
$NetworkLicense是否是网络许可证
$LicenseServer许可证服务器的机器全名
$LicenseProcesses在该许可证下当前运行的 Wolfram 系统处理器数目
$MaxLicenseProcesses由许可证所提供的最大进程数目
$PasswordFile启动内核时的密码文件

与许可证管理有关的变量.