Два процесса могут иметь тот же дескриптор файла, открытый для записи. Точно так же, как с чем-либо, последние выполняют победы.
Когда процесс открывает дескриптор файла, затем некоторый другой процесс пишет 80 строк в него, буфер памяти первого процесса не будет иметь тех 80 строк. Если это затем запишет буфер в дескриптор файла, то содержание файла будет только, что было во втором буфере памяти.
Теперь, это сказанное много программ в эти дни обнаружит, что исходное содержание файла изменилось, так как это было в последний раз открыто. Некоторые откажутся писать, некоторые предложат Вам перезагружать буфер. Некоторые могут сделать что-то еще. Это до каждой программы, чтобы удостовериться, что это делает правильную вещь. Ядро/файловая система не заботится, и обо всем, что оно знает, что буфер памяти, испытывающий недостаток в 80 строках, является правильной копией.
Теперь, если это - что-то значительно более важное как, говорят, база данных, а не просто некоторый текстовый файл или документ в Вашем корневом каталоге затем, намного более вероятно, что захват файла будет использоваться (который также не должен говорить это vim
или gedit
не используйте блокировки). База данных будет, вероятно, иметь свой собственный внутренний механизм блокировки также.
Общая философия на платформах стиля UNIX должна быть совместной относительно записей дескриптора файла. Блокировка не является механизмом управления безопасностью (это - то, что полномочия/ACL для), это - механизм целостности данных. Две программы, которые хотят записать данные обычно, хотят удостовериться, что данные записаны правильно, таким образом, они приносят пользу обоим для уважения блокировок друг друга. Ядро/файловая система предупредит о блокировках, но все еще позволяет каждому процессу сделать то, что это думает, является лучшим. Однако Linux действительно поддерживает обязательное осуществление блокировки как опцию монтирования (это может также потребовать поддержки файловой системы, но я не уверен в этом).
Можно читать, больше информации о привязывает статью File Locking Википедии.
Вот простое решение для проблемы, описал:
Для GTK 3 приложения как терминал гнома и наутилус просто создают (или редактирование, если у Вас есть один), файл ~/.config/gtk-3.0/gtk.css со следующим содержанием:
$ cat ~/.config/gtk-3.0/gtk.css
@binding-set NoKeyboardNavigation {
unbind "F10"
}
* {
gtk-key-bindings: NoKeyboardNavigation
}
Больше на проблеме посмотрите по http://youdev.co/fedora-17-f10-key-frustrating-behaviour-solved/
Это - функция. Перейдите к Редактированию-> Горячие клавиши
И снимите флажок, "Включают сочетание клавиш меню"
выключить его.
xfce-terminal
и обнаруженный, что существует опция просто выключить F10 с одним флажком ;-)
– A.D.
22.02.2013, 20:18
Enable the menu accelerator key (F10 by default)
на Edit -> Preferneces -> General
вкладка
– vladkras
15.12.2015, 14:15
Для Fedora 17 можно найти отчет об ошибках здесь
https://bugzilla.redhat.com/show_bug.cgi? id=800856
Обходное решение там, создайте ~/.config/gtk-3.0/gtk.css файл со следующим содержанием:
@binding-set NoKeyboardNavigation {
unbind "<shift>F10"
}
* {
gtk-key-bindings: NoKeyboardNavigation
}
Я закрепил это на Ubuntu путем создания нового ~/.config/gtk-3.0/gtk.css
и помещение этого в нем:
@binding-set NoKeyboardNavigation {
unbind "<shift>F10"
}
* {
gtk-key-bindings: NoKeyboardNavigation
}
в centos, rhel, oracle linux
перейдите к редактированию->Кейбордные ярлыки И уберите флажок "Включить клавишу быстрого доступа в меню". чтобы выключить его.