2010-05-08 17 views

Antwort

16

POSIX scheint nicht zu spezifizieren mktemp (1).

Es sieht aus wie die meisten modernen Systeme es, aber die verfügbare Funktionalität und die Semantik der Optionen variieren zwischen Implementierungen (so insbesondere Anrufungen nicht tragbar sein):

Also, wenn Sie eine tragbare Lösung möchten Sie müssen möglicherweise Funktionalität halten und Optionen, die auf all Ihren Plattformen von Interesse sind.

+1

Es verwendet maßen tragbar und von POSIX definiert sein, aber es scheint, dass darin einige Schwächen, indem angesprochen wurden eine neue Funktion 'mkstemp()'. "4.3BSD, POSIX.1-2001. POSIX.1-2008 entfernt die Spezifikation von mktemp()." http://man7.org/linux/man-pages/man3/mktemp.3.html Der neuere Ersatz ist http://man7.org/linux/man-pages/man3/mkstemp.3.html – TafT

+0

'mktemp' @TafT adressiert die C-Bibliotheksfunktion, während das' mktemp'-OP nach dem Befehlszeilenprogramm gefragt wird. – onlynone

+0

@onlynone ist eines der Dinge nicht oft ein sehr dünnes Furnier rund um das andere? – TafT

3

A mktempFunktion (AKA mktemp(3)) erschien zuerst in Unix V7 so überall sein, es ist wahrscheinlich. Jedoch ist ein mktempBefehl (aka mktemp(1)) zum ersten Mal erschien, glaube ich, auf OpenBSD 2.1, wenn Sie also mit wirklich vorsintflutlichen Unix-Systemen zu tun haben Sie Macht kümmern - es sei denn, Sie sehr tragbare mktemp.org Version verteilen (um das mögliche Fehlen dieses Dienstprogramms auf dem antediluvianischen System eines Kunden zu beheben). Wie wahrscheinlich Sie auf antediluvian System sind, ist fast unmöglich für uns zu erraten, natürlich - zB in HP-UX, mktemp(1) ist schon seit mindestens 8 Jahren (sogar die meisten Unternehmen haben wahrscheinlich ihre Unix-OS innerhalb dieses Zeitrahmens aktualisiert), in Xenix ich glaube, es erschien in 3.0 (in 1992), etc, etc.

+0

So die kurze Zusammenfassung ist: ja, können Sie sich verlassen maßen auf mktemp sein um – mpez0

3

FYI, mktemp erscheint NICHT mit Solaris 9 (veröffentlicht 2002/2003) aufgenommen werden - nur über diese heute lief:

 
$ 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); 
+1

Ja, Solaris 10 war die erste Solaris-Version, die den Befehl mktemp (1) im Betriebssystem enthielt. – alanc

1

Unter Solaris 9 in Paket SMCmktemp ist, siehe http://sunfreeware.com/indexsparc9.html:

uname -s
SunOS
uname -r
5.9
/usr/sbin/pkgchk -l -p/usr/local/bin/mktemp
Pathname:/usr/local/bin/mktemp
Typ: reguläre Datei
erwarteter Mode: 0555
Erwartete Besitzer:
bin Erwartete Gruppe: ist
Erwartete Dateigröße (Byte): 8884
erwartende Summe (1) des Inhalts: 6493
Erwartete letzte Änderung: 05 Nov 2002 08.48.17
durch die folgenden Pakete Referenced:
SMCmktemp
Aktueller Status: installiert

+0

Die Verbindung ist unterbrochen. –