Thanks, but i don't _always_ redirect stdin.
i wonder how is ps getting the tty (it displays an ? when there is no tty for the process)
I suppose it uses /proc, but couldn't find a reference or the info exploring the /proc fs by myself.
for now I am asking directly ps:
[[ "$(ps h -o tty $$)" != "?" ]] && ...
Don't really have an answer how ps gets its info but the attached script is something
I have been working on. It uses the /proc file system directly to get info. It uses zstat
to look for the tty info. If nothing is returned it substitutes '?". Some processes point to
/dev/null. The script is still a work in progress. I was trying to get the same results as
"ps -eHo uid=,pid=,ppid=,tty=,comm=" via a zsh script.
This doesn't answer your original question, but may give you some insight into the
/proc file system.
Hope the script is helpful.