digitalmars.D.learn - Setting process name
- Anonymouse (15/15) May 01 2019 Is there a way of setting the process/thread name that's neater
- Arun Chandrasekaran (20/35) May 02 2019 prctl can set and get the process name and thread name on Linux. You
Is there a way of setting the process/thread name that's neater than this? import core.sys.posix.pthread; extern(C) int pthread_setname_np(pthread_t, const char*); void main() { import std.string : toStringz; pthread_setname_np(pthread_self(), toStringz("thread_name")); // ... } It seems to work, but it also seems peculiar that pthread_setname_np isn't in core.sys.posix.pthread with the rest. Why is this? Is there an easier way? Thread.getThis().name doesn't seem to be it. https://forum.dlang.org/thread/gudwwmmdcqrfhbduxruq forum.dlang.org
May 01 2019
On Wed, May 1, 2019 at 7:50 PM Anonymouse via Digitalmars-d-learn <digitalmars-d-learn puremagic.com> wrote:Is there a way of setting the process/thread name that's neater than this? import core.sys.posix.pthread; extern(C) int pthread_setname_np(pthread_t, const char*); void main() { import std.string : toStringz; pthread_setname_np(pthread_self(), toStringz("thread_name")); // ... } It seems to work, but it also seems peculiar that pthread_setname_np isn't in core.sys.posix.pthread with the rest. Why is this? Is there an easier way? Thread.getThis().name doesn't seem to be it. https://forum.dlang.org/thread/gudwwmmdcqrfhbduxruq forum.dlang.orgprctl can set and get the process name and thread name on Linux. You can do something like this: import core.sys.linux.sys.prctl; byte[16] name = cast(byte[]) "Blabla"; name[name.length-1] = 0; prctl(PR_SET_NAME, cast(size_t) name.ptr, cast(size_t) null, cast(size_t) null, cast(size_t) null); // to confirm it works fine byte[16] newname; prctl(PR_GET_NAME, cast(size_t) newname.ptr, cast(size_t) null, cast(size_t) null, cast(size_t) null); int i; foreach (b; newname) { assert(b == name[i]); i++; } writeln(cast(string) newname);
May 02 2019