Требование, чтобы имя оставалось видимым во время выполнения процесса, затрудняет достижение этого. Можете ли вы вернуться к этому требованию?
Если нет, то, вероятно, не существует идеального решения. Я хотел бы рассмотреть возможность сочетания стратегии обработки сигналов с тем, что предлагает Камил Кисиэль. Вы можете отслеживать установленные обработчики сигналов, прежде чем устанавливать свои обработчики сигналов. Если обработчиком по умолчанию является SIG_IGN, вы обычно не устанавливаете свой собственный обработчик; если это SIG_DFL, вы бы это запомнили; если это что-то другое - пользовательский обработчик сигнала - вы запомните этот указатель и установите свой собственный. Когда вызывался ваш обработчик, вы делали все, что вам нужно, а затем вызывали запомненный обработчик, таким образом связывая обработчики. Вы также должны установить обработчик atexit (). Вы также должны задокументировать, что вы делаете это, и сигналы, для которых вы делаете это.
Обратите внимание, что обработка сигналов является несовершенной стратегией; SIGKILL не может быть перехвачен, и обработчик atexit () не будет вызван, а файл останется вокруг.
Предложение Дэвида Сегонда - демона временного имени файла - интересно. Для простых процессов этого достаточно; если процесс, запрашивающий временный файл, разветвляется и ожидает, что дочерний файл станет владельцем файла после этого (и завершится), тогда у демона возникнет проблема с обнаружением, когда последний процесс, использующий его, умрет - потому что он не знает автоматически процессы, у которых он открыт.