FreeBSD manual
download PDF document: setprogname.3.pdf
GETPROGNAME(3) FreeBSD Library Functions Manual GETPROGNAME(3)
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