🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.unix.shell
Article #152

Re: file locking in shell scripts

#152
From: Leslie Mikesell
Date: Sat, 25 Jul 1992 21:34
20 lines
1564 bytes
In article <1992Jul23.124327.20843@cv.ruu.nl> rvloon@cv.ruu.nl (Ronald van Loon) writes:
>Somewhere on our system is a log-file. This logfile is used to gather
>statistical information. However, it is possible that people write to the file
>at the same time, thus resulting in either the merge of the input-streams or
>total garbage in the file.

>How can I - within a shell script - lock the file exclusive for writing ? If
>that's not possible, what do I need to use to do so from C, for example ?

On unix systems it is pretty common to just ignore this issue for logfiles
where the messages are short. If you open a file in append mode, every
write() is positioned at the current end-of-file, so messages that
are generated in a single write() will be kept intact.  It can be
tricky to get a shell script to output a message in a single write()
but accumulating the string into a variable with an "echo "$VAR" >>file"
to dump it should work.  As long as the other users are using append
mode (and you aren't going over NFS) the messages should stay intact.

Les Mikesell
  les@chinet.chi.il.us
Technical Details
Message-ID: <1992Jul25.213443.1900@chinet.chi.il.us>
Path: arc1-ca.pugleaf.net!sparky!uunet!usc!zaphod.mps.ohio-state.edu!pacific.mps.ohio-state.edu!linac!uchinews!machine!chinet!les
References: <1992Jul23.124327.20843@cv.ruu.nl>

Show Full Headers
Complete Article Headers
Newsgroups: comp.unix.shell,comp.unix.programmer
Path: arc1-ca.pugleaf.net!sparky!uunet!usc!zaphod.mps.ohio-state.edu!pacific.mps.ohio-state.edu!linac!uchinews!machine!chinet!les
From: les@chinet.chi.il.us (Leslie Mikesell)
Subject: Re: file locking in shell scripts
Message-ID: <1992Jul25.213443.1900@chinet.chi.il.us>
Date: Sat, 25 Jul 1992 21:34:43 GMT
References: <1992Jul23.124327.20843@cv.ruu.nl>
Organization: Chinet - Public Access UNIX
Lines: 20