tôi phải lặp lại một FILE*
trong C trên Mac OS X (sử dụng POSIX int
tập tin mô tả tất cả các cách là tiếc ra khỏi câu hỏi), vì vậy tôi đã đưa ra các chức năng sau:Tôi có thể nhận được chế độ truy cập của `FILE *` không?
static FILE* fdup(FILE* fp, const char* mode)
{
int fd = fileno(fp);
int duplicated = dup(fd);
return fdopen(duplicated, mode);
}
Nó hoạt động rất tốt , ngoại trừ nó có phần xấu xí nhỏ mà tôi yêu cầu chế độ tập tin một lần nữa, bởi vì fdopen
dường như không thể tự xác định được.
Vấn đề này không quan trọng, vì về cơ bản, tôi chỉ sử dụng nó cho stdin
, stdout
và stderr
(và rõ ràng là tôi biết chế độ truy cập của cả ba). Tuy nhiên, nó sẽ thanh lịch hơn nếu tôi không phải tự biết; và điều này có thể xảy ra vì cuộc gọi dup
không cần đến.
Làm cách nào để xác định chế độ truy cập của luồng FILE*
?