Windows: 一時ファイルを作成してロックする

_lockingのバイト数がよく分からないなー。

#include <stdio.h>
#include <io.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <share.h>
#include <sys/locking.h>
#include <errno.h>
#include <windows.h>

#define BUFLEN 1024

int main() {
  int fd;
  char ftmp[BUFLEN];

  GetTempPathA(sizeof(ftmp), ftmp);
  strcat_s(ftmp, BUFLEN, "lock");

  _sopen_s(&fd, ftmp, _O_CREAT | _O_TEMPORARY, _SH_DENYNO, _S_IREAD | _S_IWRITE);
  puts("try lock.");
  _locking(fd, _LK_LOCK, 1);
  printf("locked!\n");
  getc(stdin);
  _locking(fd, _LK_UNLCK,1);
  _close(fd);
  return 0;
}