🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: de.comp.os.unix
5 messages
5 total messages Started by Jens Ittel Wed, 31 Jan 1996 19:37
Aendern eines Prozesstabelleneintrags
#1057
Author: Jens Ittel
Date: Wed, 31 Jan 1996 19:37
15 lines
1013 bytes
Hallo,

ich habe (mit C++ unter Unix) einen Daemon gebaut, der auf Anfragen
von Kunden wartet. Kommt eine Anfrage eines Kunden, so fuehrt der
Daemon ein fork() durch und startet die Bedienfunktion, die im 
Daemon-Code enthalten ist.

In der Prozesstabelle taucht jetzt zweimal der Daemon-Eintrag auf.
Gibt es eine Moeglichkeit den Eintrag so zu aendern, dass man bei
ps -ef an Hand der Kommandozeile (und nicht des Eltern-Prozesses) sieht
wer der Daemon und wer die Bedienung ist?

Vielen Dank

	Jens
Re: Aendern eines Prozesstabelleneintrags
#1058
Author: J Wunsch
Date: Wed, 31 Jan 1996 23:14
17 lines
1182 bytes
Jens Ittel <ittel@student.uni-kl.de> writes:

> In der Prozesstabelle taucht jetzt zweimal der Daemon-Eintrag auf.
> Gibt es eine Moeglichkeit den Eintrag so zu aendern, dass man bei
> ps -ef an Hand der Kommandozeile (und nicht des Eltern-Prozesses) sieht
> wer der Daemon und wer die Bedienung ist?

setproctitle(3), sofern Dein System sowas hat.

Ist alles extrem systemabhängig, ggf. kannste noch mit dem Über-
schreiben von argv[0] experimentieren.

-- 
cheers, J"org

joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ -- NIC: JW11-RIPE
Never trust an operating system you don't have sources for. ;-)
Re: Aendern eines Prozesstabelleneintrags
#1059
Author: Joerg Koenig
Date: Thu, 01 Feb 1996 09:00
25 lines
1162 bytes
In article <310FC4F8.41C6@student.uni-kl.de>, ittel@student.uni-kl.de says...
>
>Hallo,
>
>ich habe (mit C++ unter Unix) einen Daemon gebaut, der auf Anfragen
>von Kunden wartet. Kommt eine Anfrage eines Kunden, so fuehrt der
>Daemon ein fork() durch und startet die Bedienfunktion, die im 
>Daemon-Code enthalten ist.
>
>In der Prozesstabelle taucht jetzt zweimal der Daemon-Eintrag auf.
>Gibt es eine Moeglichkeit den Eintrag so zu aendern, dass man bei
>ps -ef an Hand der Kommandozeile (und nicht des Eltern-Prozesses) sieht
>wer der Daemon und wer die Bedienung ist?

Ja -- indem man mittels exec() ein Programm anderen Namens startet :-)
Ansonsten natuerlich nicht, da ja nunmal der Name des Prozesses der
gleiche bleibt ...

>
>Vielen Dank
>
>        Jens


	Joerg
Re: Aendern eines Prozesstabelleneintrags
#1060
Author: David-Michael Lincke
Date: Fri, 02 Feb 1996 17:09
27 lines
1605 bytes
Joerg Koenig (jko@adg.de) wrote:
> In article <310FC4F8.41C6@student.uni-kl.de>, ittel@student.uni-kl.de says...
> >
> >Hallo,
> >
> >ich habe (mit C++ unter Unix) einen Daemon gebaut, der auf Anfragen
> >von Kunden wartet. Kommt eine Anfrage eines Kunden, so fuehrt der
> >Daemon ein fork() durch und startet die Bedienfunktion, die im 
> >Daemon-Code enthalten ist.
> >
> >In der Prozesstabelle taucht jetzt zweimal der Daemon-Eintrag auf.
> >Gibt es eine Moeglichkeit den Eintrag so zu aendern, dass man bei
> >ps -ef an Hand der Kommandozeile (und nicht des Eltern-Prozesses) sieht
> >wer der Daemon und wer die Bedienung ist?

> Ja -- indem man mittels exec() ein Programm anderen Namens startet :-)
> Ansonsten natuerlich nicht, da ja nunmal der Name des Prozesses der
> gleiche bleibt ...

Aber klar doch. Unter BSD setproctitle(), ansonsten proprietäre Interfaces,
z.B. pstat() unter HP-UX.

dave
--
David-Michael Lincke	Institute for Information Management at USG
EMail: dlincke@sgcl1.unisg.ch
URL: http://www-iwi.unisg.ch/about/team/dal.html
Re: Aendern eines Prozesstabelleneintrags
#1061
Author: Olaf Titz
Date: Sun, 04 Feb 1996 17:22
35 lines
1931 bytes
Jens Ittel  <ittel@student.uni-kl.de> wrote:
> Gibt es eine Moeglichkeit den Eintrag so zu aendern, dass man bei
> ps -ef an Hand der Kommandozeile (und nicht des Eltern-Prozesses) sieht
> wer der Daemon und wer die Bedienung ist?

Alle Lösungen, die ich dafür bisher gesehen habe, laufen darauf
hinaus, den durch argv[0] bezeichneten Speicherbereich zu
überschreiben. Vorsicht, mit Blanks oder Nullen auffüllen, sonst
kommen u.U. Reste des alten Namens zum Vorschein. Wenn der neue Name
länger ist, kann man u.U. die anderen Kommandozeilenargumente
heranziehen, die i.d.R. direkt hintereinander stehen, aber eigentlich
müßte man prüfen, ob das auch wirklich der Fall ist.

Folgendes scheint unter Linux zu funktionieren, keine Ahnung ob das
auf anderen Systemen auch geht: 
  /* Set my title */
  n=argv[argc-1]+strlen(argv[argc-1])-argv[0];
  memset(argv[0], ' ', n);
  strncpy(argv[0], "-nntpd", n);

Unbedingt strncpy(), nicht strcpy() verwenden!

Korrekter wäre hier anstelle der ersten Zeile (Vorsicht ungetestet):
for (i=0,n=0; i<argc; ++i) {
        n+=strlen(argv[i])+1;
        if (argv[i+1]!=argv[0]+n+1)
                break;
}

olaf
-- 
___        Olaf.Titz@inka.de or @{stud,informatik}.uni-karlsruhe.de       ____
__ o           <URL:http://www.inka.de/~bigred/>     <IRC:praetorius>
__/<_              >> Just as long as the wheels keep on turning round
_)>(_)______________ I will live for the groove 'til the sun goes down << ____
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads