-2

我正在编写一个 ANSI C cgi-bin 服务器程序。每个程序实例可以同时访问相同的文件。我这样做:

handle = fopen(name,type);
fd = fileno(handle);
MyLockFile(fd)  //I use fcntl
.....

问题是我用“fopen”打开文件,而不是用“open”。“锁定”会以这种方式工作吗?我可以锁定“fd”,而不是“句柄”。

原因是我无法编写可行的“fd=open...”代码。我下面的代码创建了可执行文件,没有设置写权限。我不知道为什么

fd = open(name,O_CREAT|O_WRONLY|S_IREAD|S_IWRITE|S_IRGRP|
     S_IWGRP|S_IROTH|S_IWOTH);
write(fd,data,strlen(data));
close(fd);

我既不能写入也不能附加到这个文件。

4

1 回答 1

0

您的 open() 函数错误,当您指定 O_CREAT 时,权限位需要是 3. 参数,例如

 open(name,O_CREAT|O_WRONLY, 
      S_IREAD|S_IWRITE|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
于 2013-02-12T13:37:32.183 回答