12-14-2004 03:31 AM
on Linux I can do something like
JOB=sleeper sleep 10 & tr \\0 \\012  5449
to access a process' environment,
thanks to the procfs.
I miss this in HP-UX.
Or is there another way to introspect a process'es environment by HP-UX vanilla tools
(i.e. no tusc or other third-party tool)?
Btw, what's the Saxon Genitive for words ending on "s" like process?
Is it process'
Solved! Go to Solution.
12-14-2004 03:37 AM
If yes, there was a utility (some postsde on forums) procstat. That may help you.
As you must be aware, for determining the environment for a process, that will be run, you can do env, set before actually starting it.
And it is processes - I think.
12-14-2004 03:48 AM
An interesting way to phrase the question!
Either process' or process's would be appropriate. The former used to be exclusivily prefered 20-25 years ago, but the latter is now acceptible.
12-14-2004 04:12 AM
Again it is a third party. (but in the *nix world building and sharing tools is a way of life...)
I vote for- processes
-- Rod Hills
12-14-2004 04:49 AM
In this case, the possessive of process is, I think, process'.
The plural form of process is processes.
12-14-2004 04:52 AM
For more information on all of this, try this link:
**Nothing like an English grammar lesson in the middle of a technical forum**
12-14-2004 08:05 PM
thanks for pointing me to procstat.
I found a project page at http://freshmeat.net/projects/procstat/
I will install this tool first on a test box to see if it satisfies my needs.
A pitty that HP-UX hasn't an interface similar to /proc on Linux and Solaris.
Wish Dietmar Konermann c/o HP would read this thread.
Then he could also take this topic on the wish list for future HP-UX releases.
He was so graceful to take up my uttered disappointment in another thread about the lack of a loopback filesystem (that lets one mount filesystem/image files) in HP-UX, and officially tag it as request for realization.
the first version (viz. process') is I think what I learned in primary school.
This also accords to your epochal classification because that was some 30 years ago.
we have lsof already installed on quite a few boxes (an indispensible tool).
But I haven't found from lsof's manpage any reference or switch to getting a process' environment displayed.
The only references to environment relate to LSOFDEVICECACHE which is an environment variable that could point to an alternative place of a caching file.
I would bet that the term Saxon Genitive isn't familiar to most native English speakers.
Probably it's only an artificial nomenclature that they taught kids in German schools ;-)
12-15-2004 03:12 AM
There is a utility as gcore. This creates
the core image of the running process. May be this will help you. You will have to install two patches to get this.
gcore -p "pid" -o "object_specifier"
12-20-2004 09:18 PM
since I had to defer the building of procstat until now I have only yet realized that this is reading its information from a Linux procfs and thus will only run on a Linux kernel :-(
# cat README
Apr 26, 2000
Released under the GPL.
procstat reads statistics from /proc/
what files it has open, what sockets it has open, what address space it is
using, it's cwd, it's root dir, shell environment variables, or give quick,
short statistics about it.
This has only been tested in linux kernel 2.2.x and may or may not work in
earlier or development versions of the kernel. It will only work with linux.
This is the initial release.
12-20-2004 11:19 PM
the functionality you are searching for is not available in vanilla HP-UX. However, since this is an user land issue, You could attach to the running process using a debugger and then have a look at its "environ" array of strings.
BTW, for submitting official enhancement requests you should contact your local HP Response Center. All I did in the previous thread was posting an ID for an *existing* request.
12-21-2004 12:46 AM
your hint towards attaching to a running proc with a debugger sounds very promissing to me.
However not being a C hacker I lack mastery of the adb (I take I can use it for this purpose), and hence a liitle more help.
From adb's manpage I see that I could use -P switch to attach to a PID.
If I recall my embryonic C knowledge the main function gets as first two args the arc (argument count) and an **argv (argument array), and optionally an **env (environment array).
The latter I think can be fetched by the syscall getenv().
So it would be great if there was some sort of debugger getenv() call.
On the other hand I thought in order to fetch symbols from an object file (or proc/executable) that binary must have been compiled with an option that reserves memomry for the symbols as well, and that this would almost never be done on a final program release past the debugging stage because of waste of memory, right?
So will there be a chance at all to fetch environment variables from a non-debug-built binary?
But even if the binary provided symbol tables how would I have to invoke, say the adb debugger, to get the contents of environment variables displayed (i.e. which adb commands, typing, formatting etc.)?
12-21-2004 12:53 AM
what the hack is my local HP Response Centre?
I can't believe it's the Berlin HP subsidiary.
Thought all vital design and coding decissions were made in Hanover Street anyway?
12-21-2004 01:18 AM
I don't know how that would be done in Berlin.
I am very interested in this issue because being able to determine the environment of a process after or while its running.
Owner of ISN Corporation
12-21-2004 01:27 AM
we do have support contracts to issue HP support cases over a countrywide hotline.
Probably I should ask them, or browse a bit through ITRC.
To pick up the thread,
Dietmar has mailed me a hack meanwile that seems to apply to gdb.
Unfortunately I have installed gdb on only one (other) HP-UX box.
But I will try there.
This hack looks to me a bit of a mixture between shell scripting and C (viz. thingies that look like C type casts to me).
It seems to be a sort of gsb scripting dialect.
I'm sure it would make more sense to you,
although it's easy to gather.
Maybe Dietmar was so kind to also post this hack here for the community.
(then I could also thank him with some points ;-)
12-21-2004 02:34 AM
your "local HP Response Center" is the German one, located in Ratingen.
For enhancements you should go the official way (which is logging a call with the repsonse center for that) since the request should also contain information about business impact/opportunities and your support level to get the desired drive. ;-)
For the technical background... an exec'ed process gets its enviroment as "an null-terminated array of character pointers to null-terminated strings" (man exec(2)).
For 32bit processes this gdb script usually works (no guarantee!):
printf "\nCommand Line:\n"
while *$i != $start
while *$i != 0
while *$i != 0
For 64bit processes try this script instead:
printf "\nCommand Line:\n"
while ((char **)__argv)[$i] != 0
print ((char **)__argv)[$i]
while ((char **)__envp)[$i] != 0
print ((char **)__envp)[$i]
To call gdb with a script file, e.g. env32.gdb:
# gdb -x env32.gdb
No guarantee for all that stuff.