Potrzebuję utworzyć tymczasowy plik w moim programie C, napisać do niego trochę danych, a następnie wywołać zewnętrzne polecenie (przez exec lub system), aby wykonać pewne przetwarzanie na właśnie utworzonym pliku. Nie napisałem polecenia zewnętrznego ani nie jest możliwe zintegrowanie go z moim programem, więc nie sądzę, żebym mógł podzielić się z nim już otwartym deskryptorem. Dlatego muszę znać nazwę utworzonego pliku tymczasowego.Jak mogę otworzyć plik tymczasowy ORAZ uzyskać jego nazwę?
Funkcja tempname() robi to, ale niestety nie zaleca używania samego siebie, ze względu na możliwy stan wyścigu między uzyskaniem nazwy a otwarciem pliku i żadną z funkcji, które poleca (tmpfile i mkstemp) zapewniają sposób na znalezienie rzeczywistej nazwy utworzonego pliku.
'mkstemp' zwraca nazwę; zmodyfikuje przekazany argument szablonu (który jest char *, a nie const char *), zastępując X wartościami rzeczywistymi. – Joe