DataMagicとユーザプロセス間での排他制御
業務アプリケーション作成時に、DataMagicとの間でファイルの排他制御を行う必要が発生した場合、下記の方法で行えます。
Windowsの場合は、DataMagicでは入力ファイル、エラーファイルは共有ありでオープンします。出力ファイルへのアクセスはミューテックスオブジェクトによるロックをかけずに共有なし(書き込み禁止)でオープンします。業務アプリケーションで出力ファイルに対して排他制御を行いたい場合は、ファイルのアクセス許可情報を確認の上、読み込みおよび書き込みを行うようにしてください。
UNIXの場合は、入力ファイル、出力ファイル、エラーファイルに対するロックの方法としてDataMagicでは、lockf()関数(詳細はOSごとのオンラインマニュアル参照)を使用しています。業務アプリケーションで入出力ファイルなどに対して排他制御を行いたい場合は、同じようにlockf()関数を使用してください。
- <排他制御を行うプログラム例(UNIX/Linux向け)>
-
#include <fcntl.h> #include <unistd.h> int main(void) { int fd; fd = open("outfile.dat", O_RDWR|O_CREAT, 0666); if (fd == -1){ perror("open"); return 1; } if (lockf(fd, F_LOCK, 0) == -1) { perror("lockf"); return 1; } /* * file read and/or file write */ lockf(fd, F_ULOCK, 0); close(fd); return 0; }