diff --git a/src/racket/cmdline.inc b/src/racket/cmdline.inc index 5bfc1ac3a6..9b45c69560 100644 --- a/src/racket/cmdline.inc +++ b/src/racket/cmdline.inc @@ -1171,6 +1171,9 @@ static int run_from_cmd_line(int argc, char *_argv[], sprog = prog; (void)scheme_set_run_cmd(sprog); +#ifdef CAN_SET_OS_PROCESS_NAME + set_os_process_name(sprog); +#endif if (no_compiled) scheme_set_compiled_file_paths(scheme_make_null()); diff --git a/src/racket/main.c b/src/racket/main.c index 9a76f68a31..8b527a6e79 100644 --- a/src/racket/main.c +++ b/src/racket/main.c @@ -152,6 +152,25 @@ extern Scheme_Object *scheme_initialize(Scheme_Env *env); #define BANNER scheme_banner() +/*========================================================================*/ +/* OS process name */ +/*========================================================================*/ + +#if defined(linux) +# include +# ifdef PR_SET_NAME +# define CAN_SET_OS_PROCESS_NAME 1 +void set_os_process_name(char *sprog) +{ + int i = strlen(sprog) - 1; + while (i && (sprog[i - 1] != '/')) { + --i; + } + prctl(PR_SET_NAME, sprog + i); +} +# endif +#endif + /*========================================================================*/ /* command-line parsing */ /*========================================================================*/