2012-04-15 6 views
0

У меня есть программа c, которая работает в потоке и добавляет некоторые данные в файл. Я хочу запустить поток python, который скопирует тот же файл (который пишет c поток) через некоторый промежуток времени. Есть ли безопасный способ сделать это? Я делаю это в ОС Linux.Python поток, ожидающий копирования файла

+0

Один из вариантов заключается в блокировке файла: http://stackoverflow.com/questions/489861/locking-a-file-in-python –

+0

Зачем вам нужно копировать файл? –

ответ

0

В вашем сценарии есть много важных деталей, которые не упоминаются, но при условии, что вы не можете записать механизм блокировки в программу C, а затем использовать его в программе Python (например, , вы используете существующее приложение в своей системе), вы можете посмотреть в os.stat и проверить последнее измененное время m_time. Это, конечно, зависит от того, что вы знаете, что последнее m_time означает, что файл не будет снова открыт в программе C и снова используется.

Если дескриптор файла постоянно хранится в программе на C во все времена и иногда записывается, то есть не так много простых опций для того, чтобы знать, когда это так и не написано.

+0

c поток пишет файл каждые 2 секунды, но мой поток python не копирует файл, а в течение 2 секунд c-поток освобождает все блокировки из файла, почему? –

+0

Зачем вам нужно скопировать файл в _Python_ в частности? Почему бы просто не запускать 'rsync' периодически для этого? –

+0

Как я могу это сделать с помощью rsync? –

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