2016-04-09 3 views
0

Я нахожусь в Windows и использую diff для сравнения двух текстовых файлов. Он успешно работает для небольших файлов, но, когда я начинаю сравнивать 2GB файл с другой 2 Гб файл, он показывает мне:diff: разрешение текстового файла

diff: C:/inetpub/wwwroot/webclient/database_sequences/est_mouse_2.txt: Permission denied 

Мой код:

$OldDatabaseFile = "est_mouse_1"; 
$NewDatabaseFile = "est_mouse_2"; 
shell_exec("C:\\cygwin64\\bin\\bash.exe --login -c 'diff $text_files_path/$OldDatabaseFile.txt $text_files_path/$NewDatabaseFile.txt > $text_files_path/TempDiff_$OldDatabaseFile$NewDatabaseFile.txt 2>&1'"); 

est_mouse_1.txt и est_mouse_2.txt созданы мной и я проверяю разрешение файла и разрешение папки, это полный контроль. И все другие текстовые файлы, которые я сравнивал, находятся в одной папке, и они были успешно сопоставлены.

Любая идея?

+2

Какую файловую систему вы используете? Обратите внимание, что существуют серьезные ограничения для файлов размером более 2 ГБ в системах MS-Windows. – arkascha

+0

@arkascha Как я могу это знать? Я использую Windows 7 64bit – sara

+0

WIn32 или Win64? Вы запускаете код «как администратор»? – Eugene

ответ

1

Вы используете cygwin для этой операции, куча Cygwin является расширяемой. Тем не менее, он начинается с фиксированного размера, и попытки его расширения могут запускаться в память, ранее выделенную Windows. Память кучи может быть выделена до размера самого большого доступного свободного блока в виртуальной памяти процессов (VM). В 64-битных системах это приводит к 4 ГБ виртуальной машины для процесса, запущенного с этого исполняемого файла. Я думаю, что почему вы не можете сравнить два файла размером 2 ГБ, я согласен с тем, что ошибка довольно странная, но объясняет, что ваш доступ к памяти ограничен. Для получения дополнительной информации см. cygwin user guide.

+0

Он работал для небольших текстовых файлов. Эта проблема возникает, когда я сравниваю огромные текстовые файлы. ОЗУ составляет 4 ГБ. Считаете ли вы, что проблема будет решена, если я изменю свою оперативную память? Я думаю, что это не связано, но почему оно появляется в случае огромных файлов? – sara

+0

Нет, я думаю, что это проблема cygwin. Почему это так важно для вас использовать cygwin? Вы просто достигаете максимума cygwin, поэтому он работает с небольшими файлами. – Eugene

+0

Я использую его в своем проекте окончания. один из моих процессов проекта - сравнить 2 текстовых файла и найти различия, которые делают diff. – sara

Смежные вопросы