mktemp(1)的可移植性如何?

时间:2010-05-08 02:15:46

标签: shell portability

正如标题所示 - 我是否可以合理地确定mktemp将存在于我可能会遇到的任何unix-y操作系统上?

4 个答案:

答案 0 :(得分:19)

POSIX似乎没有指定 mktemp(1)

看起来大多数现代系统都有它,但可用的功能和选项的语义因实现而异(因此特定的调用可能不可移植):

因此,如果您需要便携式解决方案,您可能需要坚持在所有感兴趣的平台上使用相同功能的选项。

答案 1 :(得分:5)

mktemp 函数(AKA mktemp(3))首次出现在Unix V7中,因此可能无处不在。但是,我相信在OpenBSD 2.1上首次出现了mktemp 命令(又名mktemp(1)),所以如果你必须处理真正的antediluvian Unix系统,你可能 必须担心 - 除非您可以分发非常便携的mktemp.org版本(以确定某个客户的前端系统可能缺少此实用程序)。你有多大可能遇到antediluvian系统我们当然不可能猜测 - 例如,在HP-UX中,mktemp(1)已经存在至少8年(甚至大多数企业可能已经更新了他们的Unix操作系统在那段时间内),在Xenix中我相信它出现在3.0(1992年)等等。

答案 2 :(得分:3)

仅供参考,mktemp似乎不包含在Solaris 9(2002/2003发布)中 - 今天就碰到了这个:

$ 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
Reformatting page.  Please Wait... done

Standard C Library Functions                           mktemp(3C)

NAME
     mktemp - make a unique file name

SYNOPSIS
     #include 

     char *mktemp(char *template);

答案 3 :(得分:1)

在Solaris 9上,它位于SMCmktemp包中,请参阅http://sunfreeware.com/indexsparc9.html

  

uname -s
  在SunOS
  uname -r
  5.9
  / usr / sbin / pkgchk -l -p / usr / local / bin / mktemp
  路径名:/ usr / local / bin / mktemp
  输入:普通文件
  预期模式:0555
  预期所有人:bin
  预期组:bin
  预期文件大小(字节):8884
  预期的内容总和(1):6493
  预计最后修改时间:2002年11月5日08:48:17   参考以下包:
          SMCmktemp
  当前状态:已安装