ファイルロックをするには?

解決


gari  2004-10-14 03:40:06  No: 54735

ファイルの排他制御がやりたいのですができません。

というより、UNIX系ではflockやlockfなどを使えばいいのでしょうが。
そもそも、sys/file.hが存在してません。

私のVCの環境自体がおかしいのでしょうか?
それともVC特有の何かあるのでしょうか?

ご教授いただけたら幸いです。
なお、関数であればその時に必要なincludeファイルも一緒に教えて
いただけたら助かります。


Ban  2004-10-14 05:13:54  No: 54736

> そもそも、sys/file.hが存在してません。
> 私のVCの環境自体がおかしいのでしょうか?

現行 Windows のシステムコールは Win32API であって
UNIX とは別物ですから、言語規定の標準ヘッダなら
ともかく、他 OS 用のシステムヘッダがなかろうと
なんら驚くことはありません。

> それともVC特有の何かあるのでしょうか?

VC 特有ではありませんが、Windows ではこういった
機能を提供しています。ヘッダも MSDN 等で調べられます(↓)。http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_createfile.htm


gari  2004-10-15 18:04:06  No: 54737

以下の方法で解決できました。

<stdio.h>
<stdlib.h>
<io.h>
<fcntl.h>
<share.h>

int fd;
FILE *fp;

読込時
fd = _sopen(ファイル名, _O_RDONLY | _O_BINARY, _SH_DENYRW);
if (fd == -1){
    エラー処理
}

fp = fdopen(fd, "rb");

処理

fclose(fp);

書込時
fd = _sopen(ファイル名, _O_WRONLY | _O_BINARY, _SH_DENYRW);
if (fd == -1){
    エラー処理
}

fp = fdopen(fd, "wb");

処理

fclose(fp);


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加