Иногда мы вызываем странную проблему, когда вызываем boost::filesystem::copy()
, чтобы скопировать файл из обычного локального раздела в один из размещенных на Lustre. Обычно, если мы делаем cp
файлов, мы замечаем, что файл назначения существует правильно и доступен сразу после того, как возвращается cp
, однако при операции форсирования, когда он возвращается, файл может быть всем или нет (в пункте назначения.)To :: close() или to :: fclose()?
Просматривая код буста, я вижу:
if (::close(infile) < 0) sz_read = -1;
if (::close(outfile) < 0) sz_read = -1;
мне интересно, если это правильно, будет ли это правильно промывать файл назначение, или если этот вызов ::fclose()
явно вровень, а затем закройте файл? Я не вижу никаких явных вызовов ::fflush()
, предшествующих закрытию, поэтому не уверен, что файл действительно сброшен в пункт назначения правильно ...
'close' - это не то же самое, что' fclose'. Это файлы разных типов (дескрипторы файлов и дескрипторы файлов stdio). –
'close (файловый дескриптор)' и 'fclose (поток файлов)' оба оставляют разные. дескриптор файла - это тип 'int'. Файловый поток - это 'FILE * '. мы будем использовать либо открытые, либо закрытые или fopen и fclose – Gangadhar
... все дерьмо ... школьная ошибка! : { – Nim