NAME
getprogname
,
setprogname
—
get or set the program name
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include
<stdlib.h>
const char *
getprogname
(void);
void
setprogname
(const
char *progname);
DESCRIPTION
The
getprogname
()
and setprogname
() functions manipulate the name of
the current program. They are used by error-reporting routines to produce
consistent output.
The
getprogname
()
function returns the name of the program. If the name has not been set yet,
it will return NULL
.
The
setprogname
()
function sets the name of the program to be the last component of the
progname argument. Since a pointer to the given string
is kept as the program name, it should not be modified for the rest of the
program's lifetime.
In FreeBSD, the name of the
program is set by the start-up code that is run before
main
(); thus,
running setprogname
() is not necessary. Programs
that desire maximum portability should still call it; on another operating
system, these functions may be implemented in a portability library. Calling
setprogname
() allows the aforementioned library to
learn the program name without modifications to the start-up code.
EXAMPLES
The following example presents a simple program, which shows the
difference between getprogname
() and
argv[0].
#include <stdio.h> #include <stdlib.h> int main(int argc, char** argv) { printf("getprogname(): %s\n", getprogname()); printf("argv[0]: %s\n", argv[0]); return (0); }
When compiled and executed (e.g., with
‘./a.out
’) the output of the program
is going to look like this:
getprogname(): a.out argv[0]: ./a.out
SEE ALSO
HISTORY
These functions first appeared in NetBSD 1.6, and made their way into FreeBSD 4.4.