Ich muss eine temporäre Datei in meinem C-Programm erstellen, schreiben Sie einige Daten, und rufen Sie dann einen externen Befehl (über exec oder System), um einige Verarbeitung für die Datei, die ich gerade erstellt habe. Ich habe den externen Befehl nicht geschrieben, und es ist auch nicht machbar, ihn in mein Programm zu integrieren, daher glaube ich nicht, dass ich einen bereits geöffneten Deskriptor damit teilen kann. Daher muss ich den Namen der erstellten temporären Datei kennen.Wie öffne ich eine temporäre Datei und bekomme ihren Dateinamen?
Die Funktion tempname() tut dies, aber leider empfiehlt sie, sich nicht selbst zu verwenden, wegen einer möglichen Wettlaufsituation zwischen dem Abrufen des Namens und dem Öffnen der Datei und keiner der von ihr empfohlenen Funktionen (tmpfile und mkstemp) bieten eine Möglichkeit, den tatsächlichen Namen der erstellten Datei herauszufinden.
'mkstemp' gibt den Namen zurück; Es wird das übergebene Template-Argument modifizieren (welches ein char * ist, kein const char *), welches die X's durch die tatsächlichen Werte ersetzt. – Joe