int source = open("hi", O_CREAT | O_RDONLY);
int dest = open("resultfile", O_CREAT | O_RDWR | O_TRUNC);
FILE* source1 = fdopen(source, "r");
FILE* dest1 = fdopen(dest, "w+");
// outside of a testcase I would write something into 'resultfile' here
close(source);
close(dest);
fclose(source1);
fclose(dest1);
int sourcef = open("resultfile", O_RDONLY);
printf(strerror(errno)); // <--- Bad file descriptor
Tôi không hiểu tại sao? Làm thế nào tôi có thể kết hợp thành công luồng dựa trên IO với open()?Trộn fdopen() và mở() -> mô tả tệp sai
Thư viện mà tôi đang làm việc chỉ chấp nhận số nguyên fd (và thư viện chịu trách nhiệm nội bộ để đóng, có lẽ là gần()), nhưng tôi vẫn cần làm việc với tệp và tôi không xem như thế nào là đúng có thể mà không có các cuộc gọi f() như (fread(), ftell() vv)
Cảm ơn bạn! Tôi đã không đọc manpage một cách cẩn thận vì fdopen() manpage được trộn lẫn với freopen() và fopen(): / – Blub