X-Recipient: archive-cygwin AT delorie DOT com DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D71C6385829D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; s=default; t=1706565683; bh=CsiloWmBTrQiCqR/PdUQsrMmAL30kuwPsFnhYS3KjaQ=; h=To:Subject:Date:References:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=fNIf6vsWX5AAmBDrR73FAMs5njMBm7OdSc5Q5nq1v2yoP9sMtmli9OfVb2LkBBnEV 0VJl4PTxyGfOZum1gHAWHblJq+4f+SB0ZXv62ulRbtnwjzhgTcVq7ttNihBZorjG2N BdBt4MW21lwv9lqZjS5FlKJxBTb0QZ9FZ+q94RbU= X-Original-To: cygwin AT cygwin DOT com Delivered-To: cygwin AT cygwin DOT com DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 954B63858D32 ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 954B63858D32 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1706565628; cv=pass; b=Pm4jRAnWX7inU4sTgFGIBLTbhvGxWkv5X88Kou620FffChKD9JabnthKqNCOIgbeY5Av0Fk7EHiPKXJVx9CBBhDLq/vt69thYvh4SYOZO+WMcGTtzCGSlaTFM5s74ZEkxboUjI+Q06QJRZ89DMc//gzfRU47/2kPruEasf9J7ik= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1706565628; c=relaxed/simple; bh=mVuVSyQuVuZOAOb684/vePiyPw3zkqlFDjcEdvaZXX8=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=tp/DJf0+FCpbE6O9uRSsv+z24t/5DXuJFKXXa8Rmh5fLTwt0yKaDe39pjUZx1Wq2aJ0c+NykJlLTfYccgvarmxGeG+gptVMUTqksd1Lu+4URVYd7hI10TsLv4ZbIedyqmb/eO7ihQYAsxknzIFIY8XXg5frqSjHcgEtdVQF852s= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Jamy6ipIpCioEQLhld+Ei/lscgTe0C0PeQvUUYKqgt7JyMllZkTv449ITbvAAMUD2sLpgZnkZkBirAGn/LabE8EI4IyhSSBPclzB6AjAjF+IkULgu25reXFhyOJZTSLbRgKJAMX8OpKnUH7INepeq/MDlEQWys7QUWyxSkUW+KV0ly0jt6YBXGcwKY6QlvHxsI8Bvl/WMNp5aozvV0h6tnyLYGW0YhA0vsfpl0sNUoVu2g8S+UFg0fUBCg+G4Zkr5v1s8w1DROK0bcoy/NuAf/w3gmfd4+Ayv3zRKVBBcjfyvpJuTuZU8XoLbhFo2L6KVtqqIds/9GnFL/QgtqF63g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xotFnN7H2VnE3tYe0iUHMH3+/kOGqjPqRcTEOyC3EeE=; b=FU/vO3Lw+Gnvm2j+xco31V7wZrVtt+zo5uT/mQTll8qt0HnfNfgUFJwF+bxBziM+ehG4w89HqbHIky5x+5OtFVN16jJ9A8hwzv2KtTwoiv8uZxRS0IiOuYcok5njSbKu4lMOeNlOpF2HbowTQ/e0pt8aa+n414MASGWk3ygqbhEETnzZY/lRQ96XNTgeHWsn5RMKK9y1ZB8t/BsVnTCjPigd3L19HtsJXSUhzpe4S4nE2fOSavLgy0KWcX/68TYkLZnn1VME+1t1PYL8S5l3ZIX/G+8mT8nQWBTAEjEEf1BqwGLAryYjDYncSGGr0o+WEYloBzDXX6h/OZ/rQSdMLg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none To: "cygwin AT cygwin DOT com" Subject: Re: Setting process command name in forked process Thread-Topic: Setting process command name in forked process Thread-Index: AQHaTjFJbF93zhLsSUS7kXKt2AFVP7DsPw7ggAAu1liABCk7AIAAyKlz Date: Mon, 29 Jan 2024 22:00:22 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [vT0dkp1BI1mqLXXOW+8fFbOoy24AOcYK] x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM6PR20MB3476:EE_|PH7PR20MB5332:EE_ x-ms-office365-filtering-correlation-id: 58beed37-dc1f-425a-a117-08dc2115b108 x-ms-exchange-slblob-mailprops: KW6s2gPZH1dt7xgJadK2PVeqDM5ImhFLP0SgkX8WL3c6r4PpqvA97QdGZEfpyVyEvAIlIgcXj/rejSDC0Bkmv2H3qc2dC7UtTJLCv4lG3qk1WLj4faWeUEO6qM0d9yIkkQXccR2yLT6iQMG/kA7BTzDKknX9m9qPcY1IZfQUqO6+0j9m4rusaLz5pgAzjbmRP09y5E4GUIRfHQuszgxq6e1jwgDAwZKFyZz5outA71wWt71Ktmt8MD7ppCxaNSjcpirLe15DxdQQGnchPwrAPehqXEQlxZ5cfBNnxzxHpvl1GkR68lHvFoyTLSHmz7p5SHzVQHkmapWwFfVn39N+ggAA+96rLS3k3jvzLFexxvO/6NCj1Y1dDe2DyQveh88uGL8Xlo01GDpm1eP+2yAq/GTHpY1hGYuw4Z/XF1iuxJp55uSI9ziiL112l/2gyaK0lKpwMGAjPpV1AUq13f1Rg3W57ekcg97WnmFWgG2PDLetQOe7VTLgOByXxbTgj7/L0aI7/+yaaLikDX3MZIdsb8+PbQAZYByU+0O+qpby2hHD0ef+7lOg2lOyunO4AzpLZSzv5Ilr07tstJA7fsaJ9YZmHDuZMsJv1flPokpR/TZxQ5LUhF/2eSclv62+RRnfOKtQ9VY3UxX85Cui5XmCFT0fZNoCt0UjnB1zZhJYfsp+KJxLavxpXxWbsBNm+rxNGouLkgWPYje6YnJqJdgtjwvKhbTM5c6+4v3B4t3b0s0= x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: PAQCmuCGPaJP2W+bVItQ17kd05Il+a2mGRf2VBora3LitTrCh/EvTdMHkjYpCkQj35Wq6aL3gQL/1yBn2ZbsnUoBMJF3r+w9k09JvOgZvz4D9qbYOKlK7PkuovIQsdTVhKr4fgA7K2nrKCNtXpRK/ox0db1ihhqeZJoAG0tZyv1noGGLCKg1gTDID8MzhHNvH7Xg7YbICGl20b0hDzyA4G8AhHEfHKNVmdD5nQFnBkKR4bug7gGtVp9KKpZ0Me5k6b8N6GC5rvFWKXoRYcP6bR3YTKaa8XMg2BSsToJ4d+ucDrpcjpq7vz17mmKBHF5PbKNeBRQfHyAs1zXdrQpIfdpK+E8VU98P8GhhagdKpQ6w5GNZJOv3vEGBBalbopYY9glJFNIwHLnOtZyU64pGPgF3eUNhhHbFgcirQ5EDs6HUInFhOMSxk3aNJgXipESNhVU14BINIKIeXBv2O97l5O9NBiuT0VBAVCtHc6HGugq9Dm07ud4iPNBbBFzKnF8nZf+dXvgVFJ5xc53DNmQdPpP+z8kA0IMoQX/sWY52gLI8lT95PTaPW50aR3ZL3H6E x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?41DWh+ZP4AHQy+2QG3HP0lH7OTOZv4DyZyPsqpVd9EgQVcS6JbhB4cwJDQ?= =?iso-8859-1?Q?jdWiR6zGoS8EwpVPtAvHA0ID9Zp8Q38iG+VeW+728VvhQHsnySWzcsaNpx?= =?iso-8859-1?Q?vD0xdbXExhVSgv6Ol7zLSjh+6fgiCiVjXGy4vW0mojH+htScB+KVipUWiH?= =?iso-8859-1?Q?NlydUn9qCmr4fRHA4h5veNqVrOgSYsGxMjsnb8fGw7NOhSINrgVyyYoKMF?= =?iso-8859-1?Q?29Sgk3hpYxw6E3sx1+gs9OBaRobUy4O5iyR6edstx/GlJfcbq56Cz8dwwU?= =?iso-8859-1?Q?+TchtDPkkZgRu7WdImtTCUyQBQYD8f+KOxf6wlop/ctlVGIIvd3AczC0Nt?= =?iso-8859-1?Q?a/qK+tgxG5Sp7tXmsvXz7uv6mSEN0HaQD+V6DQxj3JV9vtseYWa8d45y/a?= =?iso-8859-1?Q?E51QFmX4sDp4i7U4Pu8zWgdbknMjyheu3wnI77cc0w0sJrm+ZNQewcFXWC?= =?iso-8859-1?Q?UwzKm2wsXygO1csTBdSbJHY6BXwJs/zYDeDIJAPZ3hiCUhHYA1eoUwv26V?= =?iso-8859-1?Q?dcaf5sRebxQt1fzuGkQNrR3gikCT/VZnHlwI8O3JvLpLXucSXbe2WX8ZHU?= =?iso-8859-1?Q?FV6buCt5PUmV3ZrSxgwKPR9x5j3jvgseGm10o6136Bv0dDaQDAdV0WPW8E?= =?iso-8859-1?Q?Ri0dpJibyiIUeO5zDDUoXDaq9wiQMQxxauUsLyR9qxu6lECTMeFpm+hybW?= =?iso-8859-1?Q?8VWQy7v558MaA7oadAXc9JUZ1p58bUr9r3b0rRyZ6vq6JExeDEDL7U+P0w?= =?iso-8859-1?Q?MKGHk9JsVYQi1+4JdGCD+uveM3CExlTTkEzVrrRyBr30G0pfW/I41wJyUz?= =?iso-8859-1?Q?5TCJqTniJD6HmJ6y9CPur3p+mVKL8KSG80zvobuaWWCMLdd15k4y4dl/nc?= =?iso-8859-1?Q?p3awjODtJlP92NwJnfVCXK+w8x72FIovKXvJqa+F4dcf8PZAIcXtpHNvFz?= =?iso-8859-1?Q?5jEWGOlYsiWqZ+pIlXFNVlm8Iw3msgNgGt9ct6Ww590QX8ofWmpdmhYFOd?= =?iso-8859-1?Q?J1fzo4WprrnzXO+inFwDxlwVhv6OMzxvb3tfc7fLBSeFyvm3LQS+7DqbKs?= =?iso-8859-1?Q?Whyv/OgqAKvs0tSvQtN9AobXyFDsQTG6moYD4ovPCgnu99WPPvpjBPtZko?= =?iso-8859-1?Q?JwBZ907SAovJzwlh40RJlemqbqeesjjUOQh4gCI97WeOJUWcdUDsmbYY1d?= =?iso-8859-1?Q?Vx4Qt2RbTdmLg4Xkx2ECq2BHhDArl9rY30Vtge5tomBFHFcEJAdZrfaFLK?= =?iso-8859-1?Q?f8OJmL2WJpT+mrfMJe1Q=3D=3D?= MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-9803a.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR20MB3476.namprd20.prod.outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 58beed37-dc1f-425a-a117-08dc2115b108 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jan 2024 22:00:22.7354 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR20MB5332 X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.30 X-BeenThere: cygwin AT cygwin DOT com X-Mailman-Version: 2.1.30 List-Id: General Cygwin discussions and problem reports List-Archive: List-Post: List-Help: List-Subscribe: , From: Steve Beck via Cygwin Reply-To: Steve Beck Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Cygwin" Thank you, Corinna and Anton for your replies. I downloaded procps, and it worked exactly as you described. I understand this approach is a non-portable hack and to the extent that it matters at all, I'd like to +1 the suggestion/request of picking up support for setproctitle(3) in the next available release. Thanks again! Best, Steve ________________________________ From: Corinna Vinschen Sent: Monday, January 29, 2024 1:58 AM To: cygwin AT cygwin DOT com Cc: Steve Beck Subject: Re: Setting process command name in forked process On Jan 26 18:35, Steve Beck via Cygwin wrote: > Thanks so much for the reply, Anton! Really appreciate it. > > I tried what you proposed. Here is the code trying both ways > (overwriting what is referenced by __argv[0] and then reassigning the > reference). I compile this code (foo.c) simply as follows: gcc -o foo > foo.c (with no errors or warnings): > > [...] > if (fork() == 0) > { > extern char **__argv; > > strcpy(__argv[0], "bar"); Don't do that. It's much too dangerous. > __argv[0] = "bar"; That's ok, but see below. > printf("Retry in Child '%s' (argv[0]) with pid %d setting __argv[0] = 'bar': ps ...\n", argv[0], getpid()); > system("ps"); Make sure to install the procps-ng package, and then call system("procps -f"); > Here is the output when running foo.exe: > [...] > Retry in Child 'bar' (argv[0]) with pid 498 setting __argv[0] = 'bar': ps ... > PID PPID PGID WINPID TTY UID STIME COMMAND > 446 445 446 108276 pty0 1207519 10:19:37 /usr/bin/bash > 445 1 445 126652 ? 1207519 10:19:36 /usr/bin/mintty > 498 497 497 128424 pty0 1207519 10:26:41 /home/sbeck/foo > 497 446 497 123772 pty0 1207519 10:26:41 /home/sbeck/foo > 500 498 497 128948 pty0 1207519 10:26:41 /usr/bin/ps > > As you can see, in neither case does the ps command seem to accurately > reflect the change in __argv[0] (although within the program, the > change occurs to argv[0]). > > Can you see what I'm doing wrong? Actually, that's not your fault. ps(1) from the cygwin base package does not support this kind of faking the process name, because it does not even get the command line of a process. The information given to ps(1) is pretty minimal and doesn't allow for stuff like that. The process name is always the real executable path the process has been started through. However, there's the ps(1) from the procps-ng package, which is called procps.exe so as not to collide with the basic Cygwin ps. This ps fetches process information from /proc, which *is* updated when you change __argv[0], because the info is fetched in realtime from the process itself. So with `procps -f', the output looks like this: Retry in Child './foo' (argv[0]) with pid 570 setting __argv[0] = 'bar': ps ... UID PID PPID C STIME TTY TIME CMD corinna 569 496 15 10:49 pty0 00:00:00 ./foo corinna 570 569 19 10:49 pty0 00:00:00 bar corinna 571 570 99 10:49 pty0 00:00:00 procps -f corinna 496 495 0 10:18 pty0 00:00:00 -tcsh Bottom line: Cygwin does not support this officially. Changing the global __argv[0] is a bad hack. It works, but is non-portable. In fact, there is no portable way to do this. SOme systems have prctl, some have setproctitle, and some have nothing like this at all, stock Windows for example. It's also too late to add something along these lines to Cygwin 3.5, which is due this week. What we can do is to support this in the next major version of Cygwin, in which case I'd prefer to implement this via setproctitle(3), given this API exists on BSD and Linux. Whether that implies changing Cygwin's very simple ps(1) as well, I can't say yet. HTH, Corinna -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple