blob: 97aa3a71607fad43595246c820bc794be62577d3 [file] [log] [blame]
/*
* Simple test of fcntl
*/
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
int fd = open(argv[0], O_RDONLY);
struct flock l;
long flags;
(void)argc;
if (fd < 0) {
perror("open");
exit(1);
}
/* Get the flags on this FD */
if ((flags = fcntl(fd, F_GETFL)) == -1) {
perror("F_GETFL");
exit(1);
}
if (flags != (O_RDONLY | O_LARGEFILE))
fprintf(stderr, "flags = %#lx\n", flags);
/* Set a lock on this FD */
memset(&l, 0, sizeof l);
l.l_type = F_RDLCK;
l.l_whence = SEEK_SET;
l.l_start = 123;
l.l_len = 456;
if (fcntl(fd, F_SETLK, &l) == -1) {
perror("F_SETLK");
exit(1);
}
/* Eventually, fork and try to conflict with this lock... */
return 0;
}