Skip Menu |
Report information
Id: 132194
Status: open
Priority: 0/
Queue: perl6

Owner: Nobody
Requestors: cpan [at] zoffix.com
Cc:
AdminCc:

Severity: (no value)
Tag: (no value)
Platform: (no value)
Patch Status: (no value)
VM: (no value)



Subject: $*PROGRAM-NAME is not assignable / does not change process's name
Download (untitled) / with headers
text/plain 489b
Opening a ticket, per https://github.com/perl6/roast/issues/339 -----------8<------------------------- $*PROGRAM-NAME is supposed to be a replacement for Perl 5's $0, but it doesn't work that way. What I'd expect to work: use v6; $*PROGRAM-NAME = 'foo'; say `ps $$`; =output Cannot modify an immutable Str (test.pl) in block <unit> at test.pl line 2 What should happen: use v5.26; $0 = "foo"; say `ps $$`; __DATA__ # PID TTY STAT TIME COMMAND # 5875 pts/1 S+ 0:00 foo
CC: bugs-bitbucket [...] rt.perl.org
To: perl6-compiler <perl6-compiler [...] perl.org>
From: Brandon Allbery <allbery.b [...] gmail.com>
Subject: Re: [perl #132194] $*PROGRAM-NAME is not assignable / does not change process's name
Date: Sun, 1 Oct 2017 12:52:05 -0400
Download (untitled) / with headers
text/plain 960b
On Sun, Oct 1, 2017 at 12:35 PM, Zoffix Znet <perl6-bugs-followup@perl.org> wrote:
Show quoted text
$*PROGRAM-NAME is supposed to be a replacement for Perl 5's $0, but it doesn't work that way.

What I'd expect to work:

use v6;
$*PROGRAM-NAME = 'foo';

This is not portable and not reliable --- although it will probably work on the limited set of systems moarvm/rakudo currently run on. But the linked ticket is not quite right either: even on Unix-likes that support it, the result would be shown by 'ps' as something like 'foo [moarvm]' (exact format will depend on OS and/or 'ps' implementation). This is forced for security-related reasons, and you can't override the process's execname to control the part in brackets.

--
brandon s allbery kf8nh                               sine nomine associates
allbery.b@gmail.com                                  ballbery@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net
I wonder if this needs a separate sub or variable instead of adding secret functionality to $*PROGRAM-NAME.

On 2017-10-01 09:52:19, allbery.b@gmail.com wrote:
Show quoted text
> On Sun, Oct 1, 2017 at 12:35 PM, Zoffix Znet <perl6-bugs-followup@perl.org>
> wrote:
>
> > $*PROGRAM-NAME is supposed to be a replacement for Perl 5's $0, but it
> > doesn't work that way.
> >
> > What I'd expect to work:
> >
> > use v6;
> > $*PROGRAM-NAME = 'foo';
> >
>
> This is not portable and not reliable --- although it will probably work on
> the limited set of systems moarvm/rakudo currently run on. But the linked
> ticket is not quite right either: even on Unix-likes that support it, the
> result would be shown by 'ps' as something like 'foo [moarvm]' (exact
> format will depend on OS and/or 'ps' implementation). This is forced for
> security-related reasons, and you can't override the process's execname to
> control the part in brackets.
>




This service is sponsored and maintained by Best Practical Solutions and runs on Perl.org infrastructure.

For issues related to this RT instance (aka "perlbug"), please contact perlbug-admin at perl.org