【发布时间】:2016-09-08 02:07:33
【问题描述】:
在C程序中,我需要在运行时找到OSTYPE,在此基础上做一些操作。
这里是代码
#include <stdlib.h>
#include <string.h>
int main () {
const char * ostype = getenv("OSTYPE");
if (strcasecmp(ostype, /* insert os name */) == 0) ...
return 0;
}
但是getenv 返回NULL(并且存在分段错误)。当我在终端中执行 echo $OSTYPE 时,它会打印 darwin15 。但是当我执行env | grep OSTYPE 时,什么都没有打印出来,这意味着它不在环境变量列表中。为了让它在我的本地机器上工作,我可以转到.bash_profile 并手动导出OSTYPE,但如果我想在新机器上运行生成的可执行文件,这并不能解决问题。
为什么OSTYPE 在运行终端时可用,但显然不在环境变量列表中。如何解决这个问题?
【问题讨论】:
-
是的,但这应该是 UNIX,对吧? developer.apple.com/library/ios/documentation/System/Conceptual/…
-
因为 bash 设置了它。没有 bash,没有变量。
-
@iharob 如果我在其他地方运行可执行文件,那么我需要知道 OSTYPE。
-
@bruceg 我会试一试的。
-
你能用
uname的输出代替吗?
标签: c macos environment-variables