[Python-bugs-list] [ python-Bugs-584566 ] os.getlogin() fails
noreply@sourceforge.net
noreply@sourceforge.net
Wed, 24 Jul 2002 08:24:59 -0700
Bugs item #584566, was opened at 2002-07-21 17:29
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=584566&group_id=5470
Category: Python Library
Group: Python 2.2.1
>Status: Closed
>Resolution: Works For Me
Priority: 5
Submitted By: Robert Blyler (rlblyler)
Assigned to: Nobody/Anonymous (nobody)
Summary: os.getlogin() fails
Initial Comment:
The os.getlogin() fails with a no-such file. I
originally reported this bug to the gentoo bug tracking
system
see: http://bugs.gentoo.org/show_bug.cgi?id=4647
The issue seems to be that some xterminals ( gterm in
this case ) do not register themselves with utmp, which
this function uses. I have two workarounds, one of
reverting back to using:
os.getenv('USER')
and another for:
print pwd.getpwuid(os.geteuid())[0]
This seems to violate the portability of os.getlogin()
though, and was wondering if a different internal
implementation should be used. I would expect that at
any rate it shouldn't cause a program to crash.
The following is the original error:
Traceback (most recent call last):
File "./trilliji.py", line 25, in ?
main()
File "./trilliji.py", line 16, in main
Connections = TriCon()
File "./clsTriCon.py", line 16, in __init__
self.login_user=os.getlogin()
OSError: [Errno 2] No such file or directory
----------------------------------------------------------------------
>Comment By: Jeremy Hylton (jhylton)
Date: 2002-07-24 15:24
Message:
Logged In: YES
user_id=31392
This is not a Python bug. Python is just calling the
platform getlogin(). On my Linux box, a C program that
calls getlogin() reports exactly the same error. It returns
NULL and sets errno to ENOENT, which strerror() converts to
"No such file or directory."
The man page for getlogin on Linux says:
For most purposes, it is more useful to use the
environ
ment variable LOGNAME to find out who the user is.
This
is more flexible precisely because the user can set
LOG
NAME arbitrarily.
The same man page describes cuserid() and says:
Nobody knows precisely what cuserid() does - avoid
it in
portable programs - avoid it altogether - use
getp
wuid(geteuid()) instead, if that is what you meant.
DO
NOT USE cuserid().
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=584566&group_id=5470