Удаляя запись файловой системы (которая оставляет фактический файл нетронутым до тех пор, пока он не будет закрыт для чтения и записи) после того, как файл был создан и открыт для чтения и записи, вы избегаете загрязнения файловой системы бесполезной записью. К сожалению, это означает, что если сценарий умирает до того, как будет запущена команда rm
, команда mkfifo
завершится ошибкой при следующем запуске:
$ mkfifo foo
$ mkfifo foo
mkfifo: cannot create fifo 'foo': File exists
Возможное улучшение здесь будет до
- гарантирует избежание столкновений, создавая разные файлы при каждом запуске,
- создает файл fifo в каталоге, доступном только его создателю (при условии, что вы используете разумную маску), и
- очистка при выходе из сценария без каких-либо проблем с синхронизацией:
trap 'rm --recursive "$working_directory"' EXIT
working_directory="$(mktemp --directory)"
fifo_file="${working_directory}/fifo.pipe"
…