正如标题所述 - 我能否合理地确定在我可能遇到的任何类Unix操作系统上都存在mktemp
?
正如标题所述 - 我能否合理地确定在我可能遇到的任何类Unix操作系统上都存在mktemp
?
POSIX似乎没有规定mktemp(1)。
看起来现代大多数系统都有它,但可用功能和选项的语义在实现之间会有所不同(因此特定的调用可能不可移植):
因此,如果您想要一个可移植的解决方案,您可能需要坚持在所有感兴趣的平台上意味着相同事情的功能和选项。
mktemp
是C库函数,而OP所问的mktemp
是命令行程序。 - onlynonemktemp(3)
,而是使用一些gnulib函数(而非glibc)来执行自己的逻辑,它所做的唯一系统调用是open
。 - onlynonemktemp
实现,命令行工具将使用已弃用的 C 函数 mktemp
。 - mtraceurmktemp
函数(也称为mktemp(3)
)最初出现在Unix V7中,因此可能无处不在。但是,mktemp
命令(又称mktemp(1)
)我认为最初出现在OpenBSD 2.1上,所以如果您必须处理真正古老的Unix系统,您可能需要担心——除非您可以分发非常便携的mktemp.org版本(以解决某些客户端古老系统上可能缺少此实用程序的潜在问题)。当然,您有多大可能遇到古老的系统对我们来说几乎是不可能猜测的——例如,在HP-UX
中,mktemp(1)
已经存在至少8年了(即使是大多数企业也可能在该时间范围内更新了其Unix操作系统),在Xenix中,我相信它出现在3.0中(1992年),等等。
请注意,Solaris 9(2002/2003年发布)似乎没有包含mktemp - 我今天刚发现:
$ uname -a SunOS dcmnapp02 5.9 Generic_122300-47 sun4u sparc SUNW,Sun-Fire-V440 $ mktemp bash: mktemp: command not found $ man mktemp bash-2.05$ man mktemp 重新格式化页面。请稍后...完成
标准C库函数 mktemp(3C)
名称 mktemp - 创建唯一文件名
用法 #include
char *mktemp(char *template);
uname -s
SunOS
uname -r
5.9
/usr/sbin/pkgchk -l -p /usr/local/bin/mktemp
路径名:/usr/local/bin/mktemp
类型:普通文件
预期模式:0555
预期所有者:bin
预期组:bin
预期文件大小(字节):8884
预期内容的sum(1):6493
预期最后修改时间:Nov 05 08:48:17 2002
被以下软件包引用:
SMCmktemp
当前状态:已安装