Re: Simple question about mmap() system call
- From: Stanislav Sedov <stas@xxxxxx>
- Date: Fri, 23 Jun 2006 18:57:41 +0400
On Fri, 23 Jun 2006 17:47:57 +0300 (EEST)
Dmitry Pryanishnikov <dmitry@xxxxxxxxxxxxxx> wrote:
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.
munmap(2)?
--
Stanislav Sedov MBSD labs, Inc. <ssedov@xxxxxxxxxxx>
Россия, Москва http://mbsd.msk.ru
--------------------------------------------------------------------
If the facts don't fit the theory, change the facts. -- A. Einstein
--------------------------------------------------------------------
PGP fingerprint: F21E D6CC 5626 9609 6CE2 A385 2BF5 5993 EB26 9581
Attachment:
pgptDc9hgpRWB.pgp
Description: PGP signature
- References:
- Simple question about mmap() system call
- From: Dmitry Pryanishnikov
- Simple question about mmap() system call
- Prev by Date: Simple question about mmap() system call
- Next by Date: Buses, devices and modules
- Previous by thread: Simple question about mmap() system call
- Next by thread: Re: Simple question about mmap() system call
- Index(es):
Relevant Pages
|
|