c – 如果文件不存在,如何创建文件?

前端之家收集整理的这篇文章主要介绍了c – 如果文件不存在,如何创建文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我写了一个UNIX守护进程(针对Debian,但它没关系)我想提供一些创建“pid文件”的方法(一个包含守护进程的进程标识符的文件).

搜索了一种只在文件不存在时打开文件方法,但却找不到.

基本上,我可以这样做:

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

但就目前而言,这段代码不会以原子方式执行任务,这样做会很危险,因为另一个进程可能会在我的测试和文件创建过程中创建文件.

你们对如何做到这一点有什么想法吗?

谢谢.

P.S:仅涉及std :: streams的解决方案的奖励点.

解决方法

男子2开放:

O_EXCL Ensure that this call creates the file: if this flag is specified in conjunction with O_CREAT,and pathname already exists,then open()
will fail. The behavior of O_EXCL is undefined if O_CREAT is not specified.

所以,你可以调用fd = open(name,O_CREAT | O_EXCL,0644); / * Open()是原子的. (因为某种原因) */

更新:当然,或者你应该将其中一个O_RDONLY,O_WRONLY或O_RDWR标志放入flags参数中.

猜你在找的C&C++相关文章