在窗口我会用这样的:重定向标准错误到一个临时文件
strcpy (errorFileName, _tempnam (NULL,"pfx"));
freopen (errorFileName, "wt", stderr);
但man page在Linux中tempnam
特别说不使用它,并使用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,所以不需要在代码中执行此操作。 –