Subject: Re: reopening a readonly file as read-write while saving lock
To: Jeremy C. Reed <firstname.lastname@example.org>
From: Giles Lean <email@example.com>
Date: 12/31/2001 17:47:53
"Jeremy C. Reed" <firstname.lastname@example.org> wrote:
> Can fcntl(2) be used to change a readonly file as read/write?
> Or how can I reopen a readonly and locked file so I can write to it?
I recommend you open the file read/write in the first place -- that's
the simplest thing to do, and allows you to upgrade the shared (read)
lock to an exclusive (write) lock easily.
If you really want a read-only file descriptor you can open the file a
second read/write without closing the first file descriptor, but if
you use standard I/O (as your example is doing) for that then you have
two lots of buffering to deal with and it's more complicated.
> The file is locked while reading and using.
> mbox = freopen(mailbox, "r+", mbox);
> But now the file is unlocked :(
That's because freopen(3) closed the file, and closing a file releases
locks held on it.
> Is this list appropriate to ask for this info?
I'd have used netbsd-help or netbsd-users, since these questions are
about programming on NetBSD rather than development of NetBSD itself.
> What are some good books on Unix programming? (I have Curry's Unix Systems
> Programming for SVR4.)
I like W. Richard Stevens' "Advanced Programming in the Unix