here are three snippets that show how to do it

APPLE

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>

#include <libproc.h>


int main()
{
    pid_t pid;

    char path[1024];

    int RC;
    char *cp;

    pid = getpid();
    RC  = proc_pidpath (pid, path, sizeof(path));
    if ( RC <= 0 )
    {
        exit(-1);
    }
    else
    {
        cp = strrchr(path,'/');
        *cp=0;
        printf("path '%s'\n",path ) ;
        exit(0);
    }
    exit(-1);
}

Freebsd
/*  FreeBSD
*/
#include <stdio.h>
#include <unistd.h>

int main()
{
char path[1024];
int  size;

    size = readlink( "/proc/curproc/file", path, sizeof(path)-1);

    path[size] = '\0';

    printf("***** '%s'\n", path );

    return(0);
}

linux

#include <stdio.h>
#include <unistd.h>

int main()
{
char path[1024];
int  size;

    size = readlink( "/proc/self/exe", path, sizeof(path)-1);

    path[size] = '\0';

    printf("***** '%s'\n", path );

    return(0);
}

enrico


> On 5 Jan 2019, at 13:07, Rick McGuire <object.r...@gmail.com> wrote:
> 
> My understanding on unix systems is that it is not possible determine the 
> location of the binary. Please correct me if I'm wrong on this point, but 
> David Ashley was quite insistent that it was not possible 

_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to