C中进程的文件权限

C中进程的文件权限,c,file-permissions,C,File Permissions,如果要在其中创建文件并将其关闭的进程: void function_procA (void) { FILE *G_fp = NULL; G_fp = fopen("/var/log/file.log", "w"); fclose(G_fp); } 另一个进程是否可以打开指向该文件的指针并开始写入该文件 void function_procB (void) { FILE *G_fp = NULL; G_fp = fopen("/var/log/file

如果要在其中创建文件并将其关闭的进程:

void function_procA (void) {
    FILE *G_fp = NULL;

    G_fp = fopen("/var/log/file.log", "w");
    fclose(G_fp);
}
另一个进程是否可以打开指向该文件的指针并开始写入该文件

void function_procB (void) {
    FILE *G_fp = NULL;

    G_fp = fopen("/var/log/file.log", "w");
    fprintf(G_fp, "Hello, World!\n");
    fclose(G_fp);
}
简而言之:不同进程之间的文件权限是什么?如果默认情况下只有一个进程拥有对该文件的独占写入权限,那么如何更改权限,使另一个进程拥有对该文件的写入权限


谢谢。

如果两个进程都由同一个用户运行,它应该可以工作。

我认为这是一个很好的描述

引述:

类似Unix的操作系统(包括Linux和苹果的OSX)则不然 通常自动锁定打开的文件或正在运行的程序。几个 各种文件锁定机制在不同的版本中都可用 Unix和许多操作系统支持多种 兼容性。最常见的两种机制是fcntl(2)和 羊群(2)。第三个这样的机构是锁(3),它可以是单独的或单独的 可以使用前两个原语之一实现。虽然 某些类型的锁可以配置为强制锁,例如文件锁 在Unix下,默认情况下是咨询。这意味着合作 进程可以使用锁来协调对文件的访问 但不合作的进程也可以随意忽略锁 并以他们选择的任何方式访问该文件。换句话说,文件锁定 仅锁定其他文件储物柜,不锁定I/O


这将成为一场数据竞赛

使用文件锁定可以很容易地避免:

#include <sys/file.h>

flock(fileno(fp), LOCK_SH); // shared lock for reading
flock(fileno(fp), LOCK_EX); // exlusive lock
flock(fileno(fp), LOCK_UN); // release lock
#包括
羊群(文件编号(fp),锁_SH);//用于读取的共享锁
flock(文件编号(fp),锁(EX);//外锁
群集(文件号(fp),锁_UN);//释放锁

上面的例子在linux上工作,但不知道windows。
flock
只是
fcntl
系统调用的包装器。

在哪个操作系统上?