From owner-freebsd-hackers@FreeBSD.ORG Fri Jun 23 14:48:06 2006 Return-Path: X-Original-To: freebsd-hackers@freebsd.org Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2F86816A492 for ; Fri, 23 Jun 2006 14:48:06 +0000 (UTC) (envelope-from dmitry@atlantis.dp.ua) Received: from postman.atlantis.dp.ua (postman.atlantis.dp.ua [193.108.47.1]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7DCDA43D45 for ; Fri, 23 Jun 2006 14:48:05 +0000 (GMT) (envelope-from dmitry@atlantis.dp.ua) Received: from smtp.atlantis.dp.ua (smtp.atlantis.dp.ua [193.108.46.231]) by postman.atlantis.dp.ua (8.13.1/8.13.1) with ESMTP id k5NElvIO053909 for ; Fri, 23 Jun 2006 17:47:57 +0300 (EEST) (envelope-from dmitry@atlantis.dp.ua) Date: Fri, 23 Jun 2006 17:47:57 +0300 (EEST) From: Dmitry Pryanishnikov To: freebsd-hackers@freebsd.org Message-ID: <20060623173723.H39481@atlantis.atlantis.dp.ua> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Subject: Simple question about mmap() system call X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jun 2006 14:48:06 -0000 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@atlantis.dp.ua nic-hdl: LYNX-RIPE