Ответ заключается в том, что существует множество возможных решений в качестве решений.
Если в вашем приложении вы используете open () с lockf () или flock () для блокировки ресурса.Поэтому в следующий раз, когда другой процесс (или тот же процесс) попытается скопировать () тот же файл, он будет заблокирован.
Если вы открываете файл с неблокирующими блокировками LOCK_NB (см. «Man -s 2 flock in Ubuntu)», а затем возвращаетесь с ошибкой EWOULDBLOCK, то вы можете сделать вывод, что файл заблокирован.
Чтобы идентифицировать все заблокированные файлы в ОС, одним из способов является lsof, чтобы увидеть все открытые файлы, и по имени файла и с помощью fcntl () вы можете определить типы удерживаемых блокировок.
Множество возможных альтернативных конструкций: например, для базы данных Oracle существует концепция, называемая списком официантов, в которой перечисляются все официанты, ожидающие на существующих заблокированных записях. Благодаря этой сложной конструкции также возможно автоматическое обнаружение взаимоблокировок.
http://www.dba -oracle.com / t_deadlock.htm
Другие курсы описаны в общих курсах ОС:
http://lovingod.host.sk/tanenbaum/Recovery-from-Deadlock.html