On 2/24/06, Philippe Jacquot <philippe.j@sparx.com> wrote:
Oui, oui, de fait. Un exec, c'est juste le process qui charge un nouveau code, mais garde l'environnement, les descripteurs, etc... donc pas de fork. En l'occurence, "exec -a bidule machin", charge le code de "machin" et, si je comprend bien le man, devrait mettre "bidule" dans $0. Or $0 ne change pas après l'exec. So what's dat -a ?
Par exemple, avec le code suivant (/tmp/truc): #!/bin/sh echo $0 $@ exec -a bidule $0
J'aurai pensé avoir une première ligne avec "/tmp/truc", puis les autres avec "bidule". Mais que nenni. D'où ma perplexité. :)
thx qd mm et a +
Quelques essais en plus : dans 1 repertoire j'ai 1 script shell : #!/bin/bash echo "0 : $0" et un executable C : #include <stdio.h> int main(int argc, char ** argv) { printf("argv[0] : %s", argv[0]); return 0; } Jusqu'a ce soir je pensais que les 2 étaient équivalents, pourtant : gnu:~/test_fork_script# sh gnu:~/test_fork_script# exec -a bla ./script_exec.sh 0 : /root/test_fork_script/script_exec.sh gnu:~/test_fork_script# sh gnu:~/test_fork_script# exec -a bla ./essai_exec argv[0]: bla gnu:~/test_fork_script# sh gnu:~/test_fork_script# exec -ca bla ./script_exec.sh Segmentation fault l'option -c est censé passée un environnement vide ... drole le segfault ! Blague a part, toutes les options fonctionnent ... presque. le premier argument est bien mis a jour, mais pour une raison que j'ignore, ca n'est pas pris en compte dans les scripts shell. Jeremy -- Linux Registered User #317862 Linux From Scratch Registered User #16571 Please do not send me .doc, .xls, .ppt, as I will *NOT* read them.