comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: How to obtain the process ID of the current IDL process in a platform-independent way?
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
Re: How to obtain the process ID of the current IDL process in a platform-independent way? [message #67945] Fri, 04 September 2009 04:13
tcburt is currently offline  tcburt
Messages: 6
Registered: September 2009
Junior Member
On Sep 4, 2:25 am, Michael Galloy <mgal...@gmail.com> wrote:
> tcburt wrote:
>> *** Question
>> Is there a platform-independent "IDL way" to obtain the process ID of
>> the current IDL process?
>
>> *** Background
>> I need the process ID (PID) of the current IDL process.  Currently I
>> have a working solution for a specific platform (Solaris 9 and 10),
>> specifically
>>    IDLUnix> pid = CALL_EXTERNAL("/lib/sparcv9/libc.so", 'getpid')
>> The reliance on a library from the operating system library limits the
>> applicability to that particular platform and installation, so I
>> consider it only a provisional solution.
>
>> A recent discovery is the Unix libidl.so library that is in the IDL
>> (v6.4 and v7.0) installation directory.  Dumping the contents with
>>    shellUnix> elfdump -s libidl.so | less
>> revealed the existence of a 'getpid' function that returns the PID via
>>    IDLUnix> pid = call_external(!dlm_path+'/libidl.so', 'getpid', /
>> cdecl)
>> This is one step towards platform independence since the library is
>> from IDL rather than the operating system and its location is stored
>> in an IDL system variable.  I have not yet tested on anything but the
>> Solaris 10 systems, so this may not work on other Unix systems
>> (e.g. linux).
>
>> I then turned to a Windows installation of IDL (v 6.2) and did not
>> find a library called libidl.dll in the !dlm_path, but did find
>> idl32.dll. I guessed[*] that this library would have 'getpid' as the
>> entry symbol, so I tried
>>    IDLWindows> pid = call_external(!dlm_path+'\idl32.dll', 'getpid', /
>> cdecl)
>> The resulting error
>>    % CALL_EXTERNAL: Error loading sharable executable.
>> indicates that the problems go deeper than just whether the symbol is
>> in the library.  Even if the call_external() had worked under Windows,
>> the method could have potential problems with internal changes to IDL
>> (e.g. library name change from idl32.dll to idl.dll).
>
>> I seek the "IDL way" to obtain the PID. Searches in idlhelp,
>> comp.lang.idl-pvwave, and Google have not revealed the way. It is a
>> testament to the usefulness of this newsgroup over the past few years
>> that other questions I had were already answered in the archives.  I
>> ask for your insight about the existence of robust solutions and
>> pointers to more fruitful paths (such as writing specific external
>> functions to determine the PID rather than using the libraries
>> delivered with IDL).
>
>> In appreciation for benefits already obtained,
>> Tim
>
>> [*] I guessed because I do not know how to dump the contents of a
>>     Windows DLL.  Local gurus will likely be able to help me remove
>>     this layer of ignorance.
>> [^] % CALL_EXTERNAL: Error loading sharable executable.
>
> I don't know of an easy way of doing this. There is a C routine
> IDL_GetUserInfo(IDL_USER_INFO *user_info) where *user_info has a field
> pid. I have a simple DLM that does this, but you would have to build it
> on all the platforms you need it on. I was going to make the project
> this is part of available sooner or later; I can try to get it ready
> earlier if that would be useful.
It would certainly be useful. Since the routine is documented by
IDL, confidence is higher that it might be a stable solution.

Thank you for the suggestion and hope,
Tim

>
> Mike
> --www.michaelgalloy.com
> Associate Research Scientist
> Tech-X Corporation
Re: How to obtain the process ID of the current IDL process in a platform-independent way? [message #67946 is a reply to message #67945] Fri, 04 September 2009 03:54 Go to previous message
tcburt is currently offline  tcburt
Messages: 6
Registered: September 2009
Junior Member
On Sep 4, 4:20 am, Maarten <maarten.sn...@knmi.nl> wrote:
> On Sep 4, 4:08 am, tcburt <tcb...@rochester.rr.com> wrote:
>
>> IDLUnix> pid = call_external(!dlm_path+'/libidl.so', 'getpid', /cdecl)
>
> FWIW: this one works on Linux.
>
> Maarten

That is good data and a welcome result. Thank you for testing.

Tim
Re: How to obtain the process ID of the current IDL process in a platform-independent way? [message #67947 is a reply to message #67946] Fri, 04 September 2009 01:20 Go to previous message
Maarten[1] is currently offline  Maarten[1]
Messages: 176
Registered: November 2005
Senior Member
On Sep 4, 4:08 am, tcburt <tcb...@rochester.rr.com> wrote:

> IDLUnix> pid = call_external(!dlm_path+'/libidl.so', 'getpid', /cdecl)

FWIW: this one works on Linux.

Maarten
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Re: How to obtain the process ID of the current IDL process in a platform-independent way?
Next Topic: Is it possible to set a string to a veriable name?

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Wed Oct 08 11:41:31 PDT 2025

Total time taken to generate the page: 0.00605 seconds