different behaviour on fbsd and linux

Peter Trsko - dogmaT dogmat at gmail.com
Sun Feb 19 15:21:08 CET 2006


On Sun, 19 Feb, 2006, jp at devnull.cz wrote:
> 	je to tak, execl() v puvodnim prikladu je opravdu pouzity spatne a 
> pro ten 1. parametr si hrabal do zasobniku tam kam nemel. Cesta a argv[0] 
> jsou ruzny veci. Shell napriklad argv[0] pouziva pro predani informace, zda 
> se jedna o login shell nebo ne:

  Podla mna to nespravi samotny execl() ale az dany spusteny program.
  Porovnaval som vysledky co spravi dany program ak zavolam:

    #include <stdio.h>

    int main(int argc, char** argv)
    {
            printf("argc = %d;\n", argc);

            for(; argc != 0; argc--, argv++) {
                    printf("%s\n", *argv);
            }

            return(0);
    }
    
  Vysledkom na oboch systemoch bolo:

    $ ./a.out
    $ argc = 0;

  Ale pri pouziti:

    #include <stdio.h>

    int main(int argc, char** argv)
    {
            printf("argc = %d;\n", argc);

	    /* ten isty vysledok dava aj:
             *
             *   for(argv++; argv != NULL; argv++) {
             *
             * (to pre uplnost)
	     */
            for(argv++, argc--; argc != 0; argc--, argv++) {
                    printf("%s\n", *argv);
            }

            return(0);
     }

  Dostanem na oboch systemoch vypis premennych prostredia a preto sa
  IMHO domnievam, ze to nie je otazka implementacie execl() (pretoze za
  rovnakych podmienok sa spravaju identicky). Predpokladam, ze je to
  sposobom akym su naprogramovane utility (Nepozeral som vsak ich
  zdrojovy kod, ak ho niekto pozeral tak by bolo dobre, aby sa podelil
  o svoje zistenia).

  BTW, pri kompilacii programu s execl() s pouzitim gcc na Linuxe a s
  ,,-Wall'' som dostal:

    $ gcc -Wall execl.c
    execl.c: In function 'main':
    execl.c:12: warning: not enough variable arguments to fit a sentinel

-- 
(dogmaT                                          |       The ASCII ()
        (icq 303140614)                          | Ribbon Campaign /\
        (jabber dogmat_at_njs_dot_netlab_dot_cz) |
        (mail dogmat_at_dogmat_dot_us)           | Say NO to HTML and
        (web http://dogmat.us))                  | Word docs in email



More information about the Users-l mailing list