Simple question about mmap() system call
- From: Dmitry Pryanishnikov <dmitry@xxxxxxxxxxxxxx>
- Date: Fri, 23 Jun 2006 17:47:57 +0300 (EEST)
Hello!
I'm writing an utility that should examine some bytes of a large file
and modify them - that't all. I've decided to mmap() the file:
void *diskp;
if ((fd=open(argv[1], O_RDWR)) == -1)
err(EX_NOINPUT, "Can't open %s for readind and writing", argv[1]);
if ((diskp=mmap(NULL, 512,
PROT_READ | PROT_WRITE, 0, fd, 0)) == MAP_FAILED)
err(EX_IOERR, "Can't mmap() file");
printf("<%c>\n",* (char *)diskp);
* (char *)diskp = '!';
if (msync(diskp, 0, MS_SYNC) || close(fd))
err(EX_IOERR, "Error closing file");
All proceeds w/o errors with the sample (2 bytes long) file, printf()
shows actual first byte of my file. But modification doesn't get written back to the disk, file contents are unchanged after execution of my code. I'm sure I'm overlooking something very basic and stupid, but can't find what exactly.
Sincerely, Dmitry
--
Atlantis ISP, System Administrator
e-mail: dmitry@xxxxxxxxxxxxxx
nic-hdl: LYNX-RIPE
_______________________________________________
freebsd-hackers@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@xxxxxxxxxxx"
- Follow-Ups:
- Re: Simple question about mmap() system call
- From: Dan Nelson
- Re: Simple question about mmap() system call
- From: Stanislav Sedov
- Re: Simple question about mmap() system call
- Prev by Date: Re: Virtual device driver programming
- Next by Date: Re: Simple question about mmap() system call
- Previous by thread: Virtual device driver programming
- Next by thread: Re: Simple question about mmap() system call
- Index(es):
Relevant Pages
|
|