Вы должны использовать mkstemp (), так как это рекомендуемая функция, но она возвращает дескриптор файла, поэтому, когда у вас есть дескриптор, получите его имя:
int fd;
fd = mkstemp("hdrXXXXXX);
/* Read out the link to our file descriptor. */
sprintf(path, "/proc/self/fd/%d", fd);
memset(result, 0, sizeof(result));
readlink(path, result, sizeof(result)-1);
/* Print the result. */
printf("%s\n", result);