On Sun, Aug 16, 2009 at 9:22 PM, Sven Joachim<svenj...@gmx.de> wrote: > On 2009-08-16 22:36 +0200, Chris Bannister wrote: > >> I noticed that /sbin/reboot is a symbolic link to /sbin/halt. How does >> the system "know" the difference? > > The program notices how it is called and behaves accordingly. Programs > written in C can get information about their name in argv[0].
Well, the parent process sets argv[0], just like it sets argv[1] and following. The idea that argv[0] should be the name with which the program was invoked is just a convention. It's not a commonly broken convention, though. Login shells are started with '-' as the first character of argv[0]. The only other example I can think of is that ldd used to call programs with argc==0 and argv[0]==NULL in order to get the dynamic linker to spit out the list of shared libraries. These days, this is done differrently and argv[0] is no longer special on Linux from that point of view. Not sure when the changeover happened, it could be the a.out->ELF switch. James. -- To UNSUBSCRIBE, email to debian-user-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org