Linux ANSI C同时访问文件和锁定

Linux ANSI C同时访问文件和锁定,c,linux,file,locking,C,Linux,File,Locking,我正在编写Linux ANSI C cgi bin服务器程序,同时访问文件 是否可以区分文件存在和文件锁定? 我在谷歌上找不到答案。 我想写一个程序,尝试打开文件几秒钟,如果fdAm假设IEEE Std 1003.1-2001可能符合ISO C标准 如果fopen出现故障,即fd

我正在编写Linux ANSI C cgi bin服务器程序,同时访问文件

  • 是否可以区分文件存在和文件锁定? 我在谷歌上找不到答案。
    我想写一个程序,尝试打开文件几秒钟,如果fdAm假设IEEE Std 1003.1-2001可能符合ISO C标准

    如果fopen出现故障,即fd<0,则系统会设置一些错误代码。。。 您可以检查这些错误代码。如果文件不存在,则返回的错误为

    埃诺特 文件名的组件未命名现有文件或文件名为空字符串

    有关更多参考资料,请访问:


    对于第2点:我一直在通过100多个进程同时写入单个文件来记录系统中的某些数据,但从未见过记录的合并(文件总是以追加模式打开)。i、 e.它总是像aabbbb

    你可能想看看flock(),不幸的是,没有答案来区分锁和不存在。flock不能在NFS文件系统上工作。我不知道我的服务器上有哪个文件系统。其他东西可能在NFS上也不起作用,比如ACL。如果你有NFS,除了强制锁之外,你应该考虑一些东西,一个锁文件就是一个例子。因为您使用的是线程,所以必须控制pthread屏障或条件变量的互斥体的并发性。其中任何一个都可以锁定文件。不要考虑FNROL或IOCTL与NFS,因为它不能保证工作。statvfs系统调用告诉您文件系统类型。好的。谢谢似乎eNont可以帮助查明文件是否已锁定。如果append工作正常,那么为append锁定文件似乎没有意义。