Sponsored Content
Top Forums Programming find the fully-qualified path for the app my module is running in Post 95389 by vino on Tuesday 10th of January 2006 11:58:14 PM
Old 01-11-2006
Quote:
Originally Posted by jim mcnamara
There is no one perfect way to do this in Linux/Unix.
I agree. But the following solution might work for the OP (Caution.. a /proc based solution.)

Code:
#include <limits.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>

/* Finds the path containing the currently running program executable.
  The path is placed into BUFFER, which is of length LEN. Returns
  the number of characters in the path, or -1 on error. */

size_t get_executable_path (char* buffer, size_t len)
{
 char* path_end;
 /* Read the target of /proc/self/exe. */
 if (readlink ("/proc/self/exe", buffer, len) <= 0)
  return -1;
 /* Find the last occurrence of a forward slash, the path separator. */
 path_end = strrchr (buffer, '/');
 if (path_end == NULL)
  return -1;
 /* Advance to the character past the last slash. */
 ++path_end;
 /* Obtain the directory containing the program by truncating the
   path after the last slash. */
 *path_end = '\0';
 /* The length of the path is the number of characters up through the
   last slash. */
 return (size_t) (path_end - buffer);
}

int main ()
{
 char path[PATH_MAX];
 get_executable_path (path, sizeof (path));
 printf ("this program is in the directory %s\n", path);
 return 0;
}

This solution fixes problems such as env settings which are exclusive for the app, and which are required to be set by the user prior to executing the app.

I picked this up from the net a long time ago.

Last edited by vino; 01-11-2006 at 01:11 AM..
 

10 More Discussions You Might Find Interesting

1. Programming

Need help with C app on Oracle running on Solaris 6

Hello, I would really appreciate some help with a problem my current client is having. He has an old legacy app that does his company's financial accounting and ERP for manufacturing, etc. The app was written by a company called "Just in time" in Austin, TX, and they are no longer in business. ... (2 Replies)
Discussion started by: w0lf
2 Replies

2. Solaris

Hostname not fully qualified..

Hi Friends.. I have a small problem with the hostname of my system.I had installed Solaris 10 X86 on Vmware in my windows 2000 system.After booting of my solaris system,if i give check-hostname command it says ,, hostname is not fully qualified ,,change the hostname to hostname.xxx.xxxxxx.com... (3 Replies)
Discussion started by: sdspawankumar
3 Replies

3. Programming

Running app after logout and monitoring

Hello! I just programmed a very simple app, it's function is to report every minute the state of the memory and cpu and put it to and xml. All this stuff is working ok since I'm logged in into the machine, but i want it to run as a service, how can I do that?? P.S: Any one knows how can I... (1 Reply)
Discussion started by: ncatdesigner
1 Replies

4. IP Networking

Unable to ping freebsd machine using fully qualified domain name

hi all. am unable to ping a freebsd machine using fully qualified domain name from a windows machine. i have already set the fqdn for the machine. plz advise me. thanks. (2 Replies)
Discussion started by: coolatt
2 Replies

5. Windows & DOS: Issues & Discussions

Display running 'app' in terminal titlebar?

Hi. I was, not too long ago, an OS X home user. One of the things I remember from using the Apple-installed Terminal is: whenever an executable that took more than a split second to do its thing was running, its name would appear in the title bar in a way similar to "Terminal: ssh" or "Terminal:... (0 Replies)
Discussion started by: SilversleevesX
0 Replies

6. Shell Programming and Scripting

how to get fully qualified path name

hi actually i want to get fully qualified path name of the file when the file name is entered as command line argument while running a shell script ex. if i run the shell as $./test.sh ./nsdnet_file.csv the it should display me the full path of the file like /dialp/Release/bin/nsdnet_file.csv... (3 Replies)
Discussion started by: priyanka3006
3 Replies

7. AIX

AIX 6.1 app running on 5.x?

Hi, A quick question. If I build an application on AIX 6.1 TL3 using XL C/C++ 8.0 and Oracle 10g, can I then take those binaries and run them on AIX 5.3 and previous? Regards Kevin (3 Replies)
Discussion started by: KevB
3 Replies

8. Solaris

Can't change fully qualified host name

I tried changing my /etc/inet/hosts file for my server to: <ip address> <hostname> <fqdn> but when I go to reboot the file changes right back to: <ip address> <hostname> how do I get the <fqdn> to stick on a reboot. Thanks (2 Replies)
Discussion started by: jastanle84
2 Replies

9. Programming

Running bin file from a module

Hi I actually wrote a simple module and I need to call a bin file from that module. Could you give me some hints how to do that? (I tried with stdlib.h and 'system()', but cannot call that function from a module). Regards. (28 Replies)
Discussion started by: Chrisdot
28 Replies

10. UNIX for Dummies Questions & Answers

How to fix Python path for some script/app?

Hello, i have: # python -V Python 2.7.6 But original for my CentOS is 2.3 or 2.4 my python folder: /root/python2.7.6 (inside are folders like lib, include, bin, share) I launched app iotop: # iotop -od 6 Traceback (most recent call last): File "/usr/bin/iotop", line 16, in... (3 Replies)
Discussion started by: postcd
3 Replies
Launch(3)						User Contributed Perl Documentation						 Launch(3)

NAME
Mac::Apps::Launch - Mac module to launch /quit applications SYNOPSIS
use Mac::Apps::Launch; my @apps = qw(R*ch Arch MPGP); my $path = "HD:System Folder:Finder"; LaunchApps([@apps], 1) or warn $^E; # launch and switch to front LaunchApps([@apps]) or warn $^E; # launch and don't switch LaunchApps($app, 1) or warn $^E; # launch and switch to front LaunchSpecs($path, 1) or warn $^E; # use path instead of app ID QuitApps(@apps) or warn $^E; # quit all @apps QuitAllApps(@apps) or warn $^E; # quit all except @apps IsRunning('MACS'); # returns boolean for whether # given app ID is running SetFront('MACS') or warn $^E; # set Finder to front Hide('MACS') or warn $^E; # hide Finder Show('Finder', 1) or warn $^E; # show Finder (1 == use name) DESCRIPTION
Simply launch or quit applications by their creator ID. The Finder can be quit in this way, though it cannot be launched in this way. This module is used by many other modules. This module as written does not work with MacPerls prior to 5.1.4r4. "Hide" and "Show" do not currently work on Mac OS X. Apps that don't have signatures under Mac OS X currently aren't handled, except with LaunchSpecs(). "SetFront" and "IsRunning" can take a four-char creator ID ('MACS'), a bundle ID ('com.apple.Finder'), or a path (/System/Library/CoreServices/Finder.app). They both optionally take a second parameter which affirms that the data is indeed a path (for those rare cases where a path might possibly look like a creator ID or bundle ID ... you never know). "IsRunning" will return the PSN of the application if it is running, which you can then use for targetting the app, or converting to a PID (with "Mac::Processes::GetProcessPID()"), to send signals to it. EXPORT
Exports functions "QuitApps", "QuitAllApps", and "LaunchApps", "IsRunning", "LaunchSpecs", "SetFront", "Hide", "Show". AUTHOR
Chris Nandor <pudge@pobox.com>, http://pudge.net/ Copyright (c) 1999-2005 Chris Nandor. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.16.2 2007-01-03 Launch(3)
All times are GMT -4. The time now is 10:08 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy