На окнах я хотел бы использовать что-то вроде этого:Перенаправление STDERR в временный файл
strcpy (errorFileName, _tempnam (NULL,"pfx"));
freopen (errorFileName, "wt", stderr);
Но man page для tempnam
в Linux специально говорит не использовать его и использовать mkstemp
вместо этого. Справедливо. Но вместо этого он возвращает дескриптор файла. Есть ли простой способ использовать mkstemp
для перенаправления stderr
в файл? И также сохранить имя файла, сгенерированное mkstemp
для дальнейшего использования в программе, если необходимо?
int fd = mkstemp("pfxXXXXXX");
if (fd != -1)
{
//get file name here? or is there a better way
strcpy (errorFileName, nameFromFd);
freopen (errorFileName, "wt", stderr);
}
Почему бы не позволить пользователю решить, где он хочет видеть его выход ? –
@BaummitAugen Они принимают решение, это часть метода, который выполняется только в том случае, если они указывают параметр. В любом случае это не мой код. Я не могу принимать проектные решения. – amza
Я имею в виду, что пользователь может просто перенаправить 'stderr' извне программы, если захочет, поэтому нет необходимости делать это в коде. –