Command Section

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
     err(3), setproctitle(3)

HISTORY
     These functions first appeared in NetBSD 1.6, and made their way into
     FreeBSD 4.4.

FreeBSD 13.1-RELEASE-p6         April 18, 2021         FreeBSD 13.1-RELEASE-p6

Command Section

man2web Home...