Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Why's ttyname() called twice on start-up?
- X-seq: zsh-workers 2152
- From: Thorsten Meinecke <kaefer@xxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxxxxxxx
- Subject: Why's ttyname() called twice on start-up?
- Date: Thu, 19 Sep 1996 20:02:58 +0200 (MET DST)
- Organization: none. Location: Berlin, Germany
Being bored the other day, I played a little with strace(1).
Even if zsh runs non-interactively, invoked for example by
% strace -f zsh -fc exit
I discovered to my astonishment a plethora of readdir() calls, all
skimming through the /dev directory, not only once, but three times!
Turns out that with my old Linux kernel 1.2.13 and libc 5.0.9, the
ttyname() function seems to be costly implemented. Things improved
since then, under, say, 2.0/5.2.18 only a few getdents() system calls
are needed instead of several hundred readdir()s. Ignoring the fact
that the implementation of ttyname() is highly system-specific, and
its efficiency may vary - can't the second call to it be avoided?
[With Linux, it's called a third time anyway, internally by getlogin()]
init_io () at init.c:318 (this is 3.0.0)
318 SHTTY = movefd(open(ttyname(0), O_RDWR));
...
setupvals () at init.c:520
520 if (!(ttystrname = ztrdup(ttyname(SHTTY))))
Regards,
--Thorsten
Messages sorted by:
Reverse Date,
Date,
Thread,
Author