在窗口我會用這樣的:重定向標準錯誤到一個臨時文件
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,所以不需要在代碼中執行此操作。 –