LINUX.ORG.RU

> man fuser

> lsof


Что-то я не вижу *функций* с такими названиями ни в libc ни в системных вызовах.

naryl ★★★★★
()
Ответ на: комментарий от naryl

> Что-то я не вижу *функций* с такими названиями ни в libc ни в системных вызовах.

а они не кросс-платформенные. Посмотри в исходники lsof'a и fuser'a. ну или system("lsof > lsof-out.txt") и дальше fopen и понеслась :-))

Вообще, давай более деталей. Тебе под какую систему надо? Ты под рутом там будешь или нет? Файл этот действительно кто угодно открывает или какое-то определенное приложение?

gods-little-toy ★★★
()

> Какой функцией можно узнать статус файла (открыт ли кем-либо на запись)?

Нужно понимать, что для того чтобы узнать такой "статус файла" достоверно, нужно "заморозить" все остальные процессы в системе. Иначе в тот момент, когда ты узнал, что процесс А читает из файла Б, эта информация уже может быть реально устаревшей (т.е. процесс А возможно уже закрыл файл Б). Если тебя это устраивает, то предлагаю вариант перебирать все PID'ы в /proc и смотреть куда указывают симлинки в /proc/$PID/fd/. Больше ничего в голову не приходит. Если нужно в реальном времени мониторить изменения такого состояния - man 7 inotify.

P.S. Раз ты не указал на какой ОС тебе это нужно, то подразумеваем linux.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.