Как создать файл, если он не существует?

Я написал демон UNIX (нацеленный на Debian, но это не должно иметь значения) и хотел обеспечить какой-то способ создания файла ".pid" (файл, который содержит идентификатор процесса демон).

Я искал способ открытия файла только, если он не существует, но не смог найти.

По сути, я мог бы сделать что-то вроде:

if (fileexists())
{
  //fail...
}
else
{
  //create it with fopen() or similar
}

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

У вас есть идеи, как это сделать?

Спасибо.

P.S. Бонусный балл за решение, которое включает только std::streams.

7
задан Zoran Jankov 28 October 2019 в 21:24
поделиться