Я задаюсь вопросом, можете ли Вы: захватите только линию или единственный характер в файле в Linux, и остальная часть файла должна остаться доступной для других процессов? Я получил задачу относительно моделирования сделки на файле с c/c ++ в соответствии с Linux. Пожалуйста, дайте мне ответ и если этот ответ да, дайте мне некоторые связи от того, где я мог посмотреть, чтобы сделать эту задачу.
Спасибо, Madicemickael
Да, это возможно.
Способ выполнения Unix - это через FCNTL
или LOCKF
.
Что бы вы ни выбрали, обязательно используйте только это и не смешивайте два. Посмотрите на этот вопрос (с ответом) об этом: FCNTL, Lockf, который лучше использовать для блокировки файлов? .
Если вы можете, посмотрите на раздел 14.3 в Расширенное программирование в среде Unix .
FCNTL () - это один API для выбора, поскольку он наименее сломан и является POSIX. Это единственный, кто работает через NFS. То, что сказал, что это полная катастрофа, поскольку замки связаны с процессами, а не дескрипторами файлов. Это означает, что если вы блокируете файл, а затем какой-то другой поток или некоторую библиотеку функцию блокировки / разблокировки его, ваш замок тоже будет сломан. Кроме того, вы не можете использовать блокировки файловой системы, чтобы защитить два потока того же процесса, чтобы помешать друг другу. Кроме того, вы не должны использовать блокировки файлов на файлах, которые доступны для более чем одного пользователя, потому что это эффективно позволяет пользователям замораживать процессы друг друга.
Как резюме: блокировка файлов на Unix создает больше проблем, чем он решает. Прежде чем использовать его, вам нужно быть действительно , конечно, вы полностью понимаете семантику.
Есть интересная статья на Javalobby , обсуждая один метод этого.
-121--1284151- LOCKF (3)
может нанести блокировку в раздел файла.