Подтвердить что ты не робот

Насколько переносимым является mktemp (1)?

Как следует из названия: могу ли я быть уверенным, что mktemp будет существовать в любой операционной системе unix-y, с которой я, вероятно, столкнусь?

4b9b3361

Ответ 1

POSIX, похоже, не указывает mktemp (1).

Похоже, что у большинства современных систем есть, но доступные функции и семантика опций различаются между реализациями (поэтому отдельные вызовы могут быть не переносимыми):

Итак, если вы хотите портативное решение, вам, возможно, придется придерживаться функциональности и опций, которые означают одно и то же на всех интересующих вас платформах.

Ответ 2

Функция A mktemp (AKA mktemp(3)) впервые появилась в Unix V7, поэтому она, вероятно, будет всюду. Тем не менее, команда mktemp (aka mktemp(1)) впервые появилась, на мой взгляд, на OpenBSD 2.1, поэтому, если вам приходится иметь дело с действительно допотопными Unix-системами, вам, возможно, придется беспокоиться - если вы не можете распространять самую портативную mktemp.org (чтобы устранить потенциальную нехватку этой утилиты для какой-либо клиентской допотопной системы). Скорее всего, вам удастся встретить допотопную систему, мы, конечно, не можем догадаться, например, в HP-UX, mktemp(1) существует не менее 8 лет (даже большинство предприятий, возможно, обновили свою ОС Unix в рамках этого временные рамки), в Xenix я считаю, что он появился в 3.0 (в 1992 году) и т.д. и т.д.

Ответ 3

FYI, 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);

Ответ 4

В 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
Ожидаемая последняя модификация: Nov 05 08:48:17 2002
Ссылка на следующие пакеты:
        SMCmktemp
Текущий статус: установлен