Detect Linux Runlevel
Marko Rauhamaa
marko at pacujo.net
Wed Dec 7 00:30:04 EST 2016
More information about the Python-list mailing list
Wed Dec 7 00:30:04 EST 2016
- Previous message (by thread): Detect Linux Runlevel
- Next message (by thread): Detect Linux Runlevel
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Tim Chase <python.list at tim.thechases.com>: > On 2016-12-07 00:29, Marko Rauhamaa wrote: >> A word a warning: your code doesn't lock /var/run/utmp before >> access, which is a race condition. The file may be updated at any >> time, and ordinary file reads may yield corrupted records. > > Since the code is reading in record-sized blocks and never writing, > I'm not sure how much possibility there is for a race condition. At > worst, I imagine that it would result in reading the old data which > isn't a horrible condition. If you read a full record at an offset, you might be right. However, your code uses Python's buffered I/O: with open(utmp_fname, "rb") as f: while True: bytes = f.read(XTMP_STRUCT_SIZE) instead of os.open() and os.read(). > For under a certain block-size (PIPE_BUF, which I think used to be > the minimum POSIX requirement of 512b, but is now 4096b on Linux), > *nix operating systems were atomic in their reading and writing. That particular guarantee is true for pipes and FIFOs only. Marko
- Previous message (by thread): Detect Linux Runlevel
- Next message (by thread): Detect Linux Runlevel
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list