Ticket #13945: test.c

File test.c, 925 bytes (added by bgamari, 2 years ago)

An end-to-end testcase

Line 
1#include <errno.h>
2#include <stdio.h>
3#include <string.h>
4#include <unistd.h>
5#include <sys/types.h>
6#include <sys/stat.h>
7#include <sys/file.h>
8
9const char* path="test.lock";
10
11int main () {
12  int res;
13
14  // cleanup
15  res = unlink(path);
16  printf("unlink: %s\n", strerror(errno));
17
18  // create file
19  int fd = open(path, O_RDWR|O_CREAT);
20  printf("open: %d\n", fd);
21
22  res = fchmod(fd, 0666);
23  printf("chmod: %d\n", fd);
24
25  res = close(fd);
26  printf("close: %d\n", fd);
27
28  // test
29  fd = open(path, O_RDONLY);
30  printf("open: %d\n", fd);
31  if (fd == -1)
32    printf("open: %s\n", strerror(errno));
33
34  struct stat stat;
35  res = fstat(fd, &stat);
36  printf("stat: %s\n", strerror(errno));
37
38  // this will fail with EBADF
39  res = flock(fd, LOCK_EX);
40  printf("flock: %s\n", strerror(errno));
41
42  res = flock(fd, LOCK_UN);
43  printf("funlock: %s\n", strerror(errno));
44
45  res = close(fd);
46  printf("close: %d\n", fd);
47
48  return 0;
49}