Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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.  Pro-
     grams that	desire maximum portability should still	call it; on another
     operating system, these functions may be implemented in a portability li-
     brary.  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 differ-
     ence 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 pro-
     gram 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.0			April 18, 2021			  FreeBSD 13.0

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | EXAMPLES | SEE ALSO | HISTORY

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=getprogname&sektion=3&manpath=FreeBSD+13.2-RELEASE+and+Ports>

home | help