相关疑难解决方法(0)

检查C中是否存在文件的最佳方法是什么?

有没有比简单地尝试打开文件更好的方法?

int exists(const char *fname)
{
    FILE *file;
    if ((file = fopen(fname, "r")))
    {
        fclose(file);
        return 1;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c filesystems cross-platform

401
推荐指数
8
解决办法
50万
查看次数

如何从POSIX文件描述符构造c ++ fstream?

我基本上是在寻找fdopen()的C++版本.我对此做了一些研究,这似乎应该是容易的事情之一,但事实证明是非常复杂的.我是否遗漏了这种信念(即它真的很容易)?如果没有,是否有一个好的图书馆在那里处理这个?

编辑:将我的示例解决方案移到单独的答案.

c++ posix fstream file-descriptor

88
推荐指数
5
解决办法
5万
查看次数

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

我写了一个UNIX守护进程(目标是Debian,但它没关系)我想提供一些创建"pid文件"的方法(一个包含守护进程的进程标识符的文件).

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

基本上,我可以这样做:

if (fileexists())
{
  //fail...
}
else
{
  //create it with fopen() or similar
}
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢.

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

c++ linux file atomic

7
推荐指数
2
解决办法
3817
查看次数

标签 统计

c++ ×2

atomic ×1

c ×1

cross-platform ×1

file ×1

file-descriptor ×1

filesystems ×1

fstream ×1

linux ×1

posix ×1