Можно ли создать файл, который будет удален, когда его (собственный) процесс исчезнет? - PullRequest
1 голос
/ 20 марта 2012

Я хочу создать файл в Mac OS X (10.6), который будет автоматически удален, когда мой процесс завершится. Это возможно? Это было бы очень удобно для схемы блокировки файлов, которую я реализую. Предпочтительно в качестве вызова Какао или Углерода.

Я знаю, что в Windows это возможно. Это очень полезная функция, но я не знаю, должна ли она быть поддержана файловой системой.

На win32 вы можете вызывать CreateFile с помощью FILE_FLAG_DELETE_ON_CLOSE. В .net вы можете создать FileStream с FileOptions.DeleteOnClose в качестве аргумента.

Ответы [ 3 ]

2 голосов
/ 20 марта 2012

Если вы пишете свою собственную программу, вы можете использовать вызов tmpfile ().Он создает временный файл, который автоматически удаляется при завершении программы.

0 голосов
/ 20 марта 2012

Вы можете зарегистрировать обработчик atexit() для удаления файла, но это не обязательно будет полностью надежно, особенно в случае сбоя программы.

Если вам нужна правильная блокировка файлов, рассмотрите возможность использования flock () , хотя она и является кооперативной.

0 голосов
/ 20 марта 2012

Вы можете попросить делегата вашего приложения создать и удалить файл через NSApplicationDelegate, однако файл останется там, если пользователь принудительно завершит работу / завершит работу. Если принудительный выход не является частью вашей заботы, тогда это должно сработать. Если нет, вы можете создать простой агент запуска, который проверяет, существует ли ваш процесс, а если нет, удаляет файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...