Где функция tmpname записывает временные файлы в среде Sun Solaris? - PullRequest
0 голосов
/ 26 февраля 2020

Я нахожусь в среде Unix (Sun Ultra 5 с g cc v.2.95.3), и я пытаюсь понять, где мой компилятор записывает временные файлы, используя функцию tmpnam. Я знаю, что эта работа устарела, но мое было только любопытство. Я действовал так: я запустил этот источник в c:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    char nomefile[L_tmpnam];

    strcpy(nomefile, "my_file.txt");
    tmpnam(nomefile);

    getchar();

    return(0);
}

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

find / -name my_file.txt -print

к сожалению, он не находит его. Тем не менее в книге, которую я читаю, говорится, что эта функция (tmpnam), в отличие от функции tmpfile, позволяет указать имя временного файла и записать его где-нибудь в файловой системе.

1 Ответ

0 голосов
/ 27 февраля 2020

Правильный источник для определения места записи временных файлов следующий. Как мне было предложено в комментариях.

#include <stdio.h>

int main(void) {
    char buffer[L_tmpnam] = "my_file.txt";
    char *ptr;

    tmpnam(buffer);
    printf("Temporary name 1: %s\n", buffer);

    ptr = tmpnam(NULL);
    printf("Temporary name 2: %s\n", ptr);

    return(0);
}

Вывод:

Temporary name 1: /var/tmp/aaagXay5b
Temporary name 2: /var/tmp/baahXay5b
...