HULFTとユーザージョブ間での排他制御について
業務アプリケーションを作成したときに、HULFTとの間でファイルの排他制御を行う必要が発生した場合、以下の方法で行うことができます。
配信ファイルのクリアや削除を指定するときの配信ファイルおよび集信ファイルに対するロックの方法としてHULFTでは、lockf()関数(詳細は各OSのオンラインマニュアル参照)を使用しています。
業務アプリケーションで配信ファイルまたは集信ファイルに対して排他制御を行いたい場合は、同じようにlockf()関数を使用してください。
<排他制御を行うプログラム例>
#include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/fcntl.h> #include <errno.h> main() { int wfp, ans, i; char buf[5]; wfp = open( "./rcvfile.dat", O_RDWR|O_CREAT, 0666 ); if( wfp == -1 ){ perror( "OPEN" ); exit( 1 ); } lockf( wfp, F_LOCK, 0 ); ans = read( wfp, buf, sizeof( buf ) ); if( ans < 0 ){ perror( "READ" ); close( wfp ); exit( 1 ); } printf( "read:[%s]\n", buf ); close( wfp ); exit( 0 ); }