Moin, > Das da oben ist C Code. Die man Page findest Du in > # dpkg -S /usr/share/man/man3/exec.3.gz > manpages-dev: /usr/share/man/man3/exec.3.gz ✓ > Mit Login Shells hat das wenig zu tun. Heiko wollte vermutlich darauf > hinaus, dass ein Programm unter Unix seinen Namen in der Prozessliste quasi > beliebig setzen darf. Und eine Login Shell das dann entspechend tut. Fast. Exec(3) hat tatsächlich nicht ausschließlich mit Login-Shells etwas zu tun, sondern mit *jedem* Start eines Prozesses. Und es ist in der Regel der Aufrufer, der den Prozessnamen beim Aufruf von exec(3) in argv[0] einträgt. Unter Linux (möglicherweise auch unter anderen unixähnliches Betriebssystemen) ist es dem aufgerufenen Prozess allerdings ebenfalls möglich, seinen Prozessnamen (also wieder argv[0]) zu setzen, und damit in der Prozesstabelle anders auszusehen. Je nachdem, wie man die Prozesstabelle anschaut, sieht man entweder argv[0], oder das aufgerufene Binary, oder den Pfad des Binaries. Beispiel (hier ausgführt unter einer Bash!) ``` $ exec -l bash # damit erzeugen wir vorsätzlich eine Login-Shell # alternativ wäre auch exec -a -bash bash # gegangen: $ exec -a zzz sleep 1h & # noch ein anderer (hier als Kind) Prozess $ perl -e '$0 = "FOO"; sleep 90"' & # dieser setzt selbst seinen Namen $ ps -opid,cmd,comm,exe # und nun gucken wir mal nach den Prozessen PID CMD COMMAND EXE 807734 -bash bash /usr/bin/bash 807806 zzz 1h sleep /usr/bin/sleep 807809 FOO FOO /usr/bin/perl 807810 ps -opid,cmd,comm,exe ps /usr/bin/ps $ _ ``` Unix Grundlagenwissen, wurde bei uns früher in Heimatkunde, Klasse 3 vermittelt ;) Best regards from Dresden/Germany Viele Grüße aus Dresden Heiko Schlittermann -- SCHLITTERMANN.de ---------------------------- internet & unix support - Heiko Schlittermann, Dipl.-Ing. (TU) - {fon,fax}: +49.351.802998{1,3} - gnupg encrypted messages are welcome --------------- key ID: F69376CE -
Attachment:
signature.asc
Description: PGP signature