Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Common lisp 如何使用common lisp确定操作系统和主机名?_Common Lisp_Sbcl - Fatal编程技术网

Common lisp 如何使用common lisp确定操作系统和主机名?

Common lisp 如何使用common lisp确定操作系统和主机名?,common-lisp,sbcl,Common Lisp,Sbcl,为了让我的.sbclrc文件在我使用的两台计算机上工作,我想从sbcl中获取主机名和/或操作系统。我知道我可以设置并查找环境变量,但有没有更直接的方法 更新 我将问题改为引用CommonLisp,因为Ken的答案并不特定于sbcl * (require :sb-bsd-sockets) ("SB-BSD-SOCKETS" "SB-GROVEL" "ASDF") * (use-package :sb-bsd-sockets) T * (host-ent-name (get-host-by-na

为了让我的.sbclrc文件在我使用的两台计算机上工作,我想从sbcl中获取主机名和/或操作系统。我知道我可以设置并查找环境变量,但有没有更直接的方法

更新

我将问题改为引用CommonLisp,因为Ken的答案并不特定于sbcl

* (require :sb-bsd-sockets)
("SB-BSD-SOCKETS" "SB-GROVEL" "ASDF")

* (use-package :sb-bsd-sockets)
T

* (host-ent-name (get-host-by-name "localhost"))
"myhost.mydomain.ext"

* (find :win32 *features*)
:WIN32

* (find :linux *features*)
NIL
编辑:我更喜欢@Ken的解决方案+1.

我会使用“”函数:

* (machine-instance)
"myhostname"
* (machine-type)
"X86-64"
* (machine-version)
"Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz"
* (software-type)
"Linux"
* (software-version)
"2.6.32-3-amd64"

谢谢你,我不知道我怎么会错过那些!尽管这些函数是可移植的,但请记住,在其他实现中,它们返回完全不同的内容。我用CLisp尝试过它们,我对大多数返回值感到惊讶。是的,如果您想在编译器和体系结构之间都具有可移植性,您需要在这里做更多的工作
*功能*
在两者之间更为一致,但仍有所不同,例如,SBCL和CLISP都定义
:UNIX
,但只有SBCL定义
:LINUX
。当您需要它来处理个人配置文件以外的内容时,普通功能库非常方便: