(d'après ce que m'a donné "Xavier Roche" plus haut dans ce fil : <http://groups.google.fr/group/fr.comp.lang.c/msg/b8fe3dfe32303c32>)
Ce n'est pas du C standard. Utilise le troisième argument du main pour cela.
ext-ce qu'on peut toujours comptéer sur PWD ???
C'est quoi "PWD" ?
P = Path to W = Working D = Directory
càd là **** d'où **** est lancé le main par ex si au term, on fait :
~/work/C/essais/environ_by_main_arg%> ./test /* l'exec est test */ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--------PATH FROM HOME PWD retourne le path depuis / vers le répertoire parant de test : PWD = /Users/yvon/work/C/essais/environ_by_main_arg OLDPWD = /Users/yvon/work/C/essais/environ
si je fais :
~%> cd / ^-------------------TILDA == HOME /%> /Users/yvon/work/C/essais/environ_by_main_arg/test ^------------------- "/"
/* ici le test est lancé depuis / */
alors j'ai :
PWD = / OLDPWD = /Users/yvon /* j'étais dans HOME avant le cd / */
-- une bévue
Eric Levenez <news@levenez.com> wrote:
C'est la seule méthode je crois qui soit portable.
ah merci beaucoup, je suppose quelles sont sous la forme :
MACHIN=bidule ???
j'ai essayé avec environ aussi :
Il manque plein de include. Quand tu postes du code, pense à copier tout
ton code et pas juste une partie, sinon ce n'est guère exploitable.
(d'après ce que m'a donné "Xavier Roche" plus haut dans ce fil :
<http://groups.google.fr/group/fr.comp.lang.c/msg/b8fe3dfe32303c32>)
Ce n'est pas du C standard. Utilise le troisième argument du main pour cela.
ext-ce qu'on peut toujours comptéer sur PWD ???
C'est quoi "PWD" ?
P = Path to
W = Working
D = Directory
càd là **** d'où **** est lancé le main par ex si au term, on fait :
~/work/C/essais/environ_by_main_arg%> ./test /* l'exec est test */
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--------PATH FROM HOME
PWD retourne le path depuis / vers le répertoire parant de test :
PWD = /Users/yvon/work/C/essais/environ_by_main_arg
OLDPWD = /Users/yvon/work/C/essais/environ
si je fais :
~%> cd /
^-------------------TILDA == HOME
/%> /Users/yvon/work/C/essais/environ_by_main_arg/test
^------------------- "/"
/* ici le test est lancé depuis / */
alors j'ai :
PWD = /
OLDPWD = /Users/yvon /* j'étais dans HOME avant le cd / */
(d'après ce que m'a donné "Xavier Roche" plus haut dans ce fil : <http://groups.google.fr/group/fr.comp.lang.c/msg/b8fe3dfe32303c32>)
Ce n'est pas du C standard. Utilise le troisième argument du main pour cela.
ext-ce qu'on peut toujours comptéer sur PWD ???
C'est quoi "PWD" ?
P = Path to W = Working D = Directory
càd là **** d'où **** est lancé le main par ex si au term, on fait :
~/work/C/essais/environ_by_main_arg%> ./test /* l'exec est test */ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--------PATH FROM HOME PWD retourne le path depuis / vers le répertoire parant de test : PWD = /Users/yvon/work/C/essais/environ_by_main_arg OLDPWD = /Users/yvon/work/C/essais/environ
si je fais :
~%> cd / ^-------------------TILDA == HOME /%> /Users/yvon/work/C/essais/environ_by_main_arg/test ^------------------- "/"
/* ici le test est lancé depuis / */
alors j'ai :
PWD = / OLDPWD = /Users/yvon /* j'étais dans HOME avant le cd / */
-- une bévue
pere.noel
gl wrote:
fclose(NULL) n'est pas défini, il ne faut donc pas appeler fclose(file) si file vaut NULL.
OK, merci bien ! -- une bévue
gl <gl@gl.fr> wrote:
fclose(NULL) n'est pas défini, il ne faut donc pas appeler fclose(file)
si file vaut NULL.
fclose(NULL) n'est pas défini, il ne faut donc pas appeler fclose(file) si file vaut NULL.
OK, merci bien ! -- une bévue
Eric Levenez
Le 11/09/06 19:40, dans <1hlilwu.w7civr1qpfd3N%, « Une bévue » a écrit :
Eric Levenez wrote:
C'est quoi "PWD" ?
P = Path to W = Working D = Directory
Ah, donc tu parle de "pwd" (en minuscule) qui est une commande shell unix, et pas une fonction C. Et c'est "Print Working Directory". Certains Shell utilisent une variables d'environnement PWD, mais qui ne sera pas toujours à jour suivant les shells.
Le C n'a pas les notions de répertoire, donc pas de working directory en C. par contre sous unix il y a les fonctions C : getwd et getcwd.
càd là **** d'où **** est lancé le main par ex si au term, on fait :
Disons, que c'est le répertoire courant du père du programme. Le père pouvant changer de répertoire entre son lancement et l'exécution du fils.
De plus il peut ne pas y avoir de répertoire courant.
Exemple : - tu te places dans un répertoire x par le shell - tu lances un programme de test qui fait un "sleep" de quelques secondes - tu effaces le répertoire x par un shell pendant ce temps - le programme, après son sleep, affiche le répertoire courant : NULL car il n'existe plus dans le système de fichier.
Mais c'est quoi ta question sur le C standard déjà ? :-)
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 11/09/06 19:40, dans
<1hlilwu.w7civr1qpfd3N%pere.noel@laponie.com.invalid>, « Une bévue »
<pere.noel@laponie.com.invalid> a écrit :
Eric Levenez <news@levenez.com> wrote:
C'est quoi "PWD" ?
P = Path to
W = Working
D = Directory
Ah, donc tu parle de "pwd" (en minuscule) qui est une commande shell unix,
et pas une fonction C. Et c'est "Print Working Directory". Certains Shell
utilisent une variables d'environnement PWD, mais qui ne sera pas toujours à
jour suivant les shells.
Le C n'a pas les notions de répertoire, donc pas de working directory en C.
par contre sous unix il y a les fonctions C : getwd et getcwd.
càd là **** d'où **** est lancé le main par ex si au term, on fait :
Disons, que c'est le répertoire courant du père du programme. Le père
pouvant changer de répertoire entre son lancement et l'exécution du fils.
De plus il peut ne pas y avoir de répertoire courant.
Exemple :
- tu te places dans un répertoire x par le shell
- tu lances un programme de test qui fait un "sleep" de quelques secondes
- tu effaces le répertoire x par un shell pendant ce temps
- le programme, après son sleep, affiche le répertoire courant : NULL car il
n'existe plus dans le système de fichier.
Mais c'est quoi ta question sur le C standard déjà ? :-)
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Le 11/09/06 19:40, dans <1hlilwu.w7civr1qpfd3N%, « Une bévue » a écrit :
Eric Levenez wrote:
C'est quoi "PWD" ?
P = Path to W = Working D = Directory
Ah, donc tu parle de "pwd" (en minuscule) qui est une commande shell unix, et pas une fonction C. Et c'est "Print Working Directory". Certains Shell utilisent une variables d'environnement PWD, mais qui ne sera pas toujours à jour suivant les shells.
Le C n'a pas les notions de répertoire, donc pas de working directory en C. par contre sous unix il y a les fonctions C : getwd et getcwd.
càd là **** d'où **** est lancé le main par ex si au term, on fait :
Disons, que c'est le répertoire courant du père du programme. Le père pouvant changer de répertoire entre son lancement et l'exécution du fils.
De plus il peut ne pas y avoir de répertoire courant.
Exemple : - tu te places dans un répertoire x par le shell - tu lances un programme de test qui fait un "sleep" de quelques secondes - tu effaces le répertoire x par un shell pendant ce temps - le programme, après son sleep, affiche le répertoire courant : NULL car il n'existe plus dans le système de fichier.
Mais c'est quoi ta question sur le C standard déjà ? :-)
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
pere.noel
Eric Levenez wrote:
Mais c'est quoi ta question sur le C standard déjà ? :-)
j'ai pas de question moi, que des réponses ))) -- une bévue
Eric Levenez <news@levenez.com> wrote:
Mais c'est quoi ta question sur le C standard déjà ? :-)
j'ai pas de question moi, que des réponses )))
--
une bévue
dans envp, tu as toutes les variables d'environnement... j'essaie asap...
C'est la seule méthode je crois qui soit portable.
Malheureusement non, la norme ne définie que : * int main(void) * int main(int argc, char* argv[]) mais il est vrai que la forme avec envp est assez fréquente, mais pas 100% portable.
Le 11/09/06 18:40, dans
<1hlij6m.18mll171fppjrgN%pere.noel@laponie.com.invalid>, « Une bévue »
dans envp, tu as toutes les variables d'environnement...
j'essaie asap...
C'est la seule méthode je crois qui soit portable.
Malheureusement non, la norme ne définie que :
* int main(void)
* int main(int argc, char* argv[])
mais il est vrai que la forme avec envp est assez fréquente, mais pas
100% portable.
dans envp, tu as toutes les variables d'environnement... j'essaie asap...
C'est la seule méthode je crois qui soit portable.
Malheureusement non, la norme ne définie que : * int main(void) * int main(int argc, char* argv[]) mais il est vrai que la forme avec envp est assez fréquente, mais pas 100% portable.
Eric Levenez
Le 11/09/06 20:13, dans <4505a745$0$5084$, « gl » a écrit :
C'est la seule méthode je crois qui soit portable.
Malheureusement non, la norme ne définie que : * int main(void) * int main(int argc, char* argv[])
Et :
int main(int argc, char *argv[], char *envp[])
C'est défini au paragraphe J.5.1 de la norme. Mais pour que cette fonction soit portable il faut effectivement que le système le supporte :-)
mais il est vrai que la forme avec envp est assez fréquente, mais pas 100% portable.
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 11/09/06 20:13, dans <4505a745$0$5084$ba4acef3@news.orange.fr>, « gl »
<gl@gl.fr> a écrit :
C'est la seule méthode je crois qui soit portable.
Malheureusement non, la norme ne définie que :
* int main(void)
* int main(int argc, char* argv[])
Et :
int main(int argc, char *argv[], char *envp[])
C'est défini au paragraphe J.5.1 de la norme. Mais pour que cette fonction
soit portable il faut effectivement que le système le supporte :-)
mais il est vrai que la forme avec envp est assez fréquente, mais pas
100% portable.
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
C'est défini au paragraphe J.5.1 de la norme. Mais pour que cette fonction soit portable il faut effectivement que le système le supporte :-)
pas de pb pour moi, je cherche la portabilité (dans ce cas) entre Mac OS X et Mac OS X ))) -- une bévue
gl
Le 11/09/06 20:13, dans <4505a745$0$5084$, « gl »
C'est la seule méthode je crois qui soit portable. Malheureusement non, la norme ne définie que :
* int main(void) * int main(int argc, char* argv[])
Et :
int main(int argc, char *argv[], char *envp[])
C'est défini au paragraphe J.5.1 de la norme. Mais pour que cette fonction soit portable il faut effectivement que le système le supporte :-)
Dans le paragraphe "Common extensions". Ce n'est pas une forme normalisée et imposée par la norme mais une extension courante (comme indiqué dans mon message précédent). Une implémentation est libre ne pas la proposer voire de proposer une extension syntaxiquement semblable avec un sens totalement différent (ce qui serait particulièrement malvenu).
Ce n'est pas 100% portable même si il est vrai qu'il y a de fortes chances de rencontrer cette extension, qui reste malgré tout la meilleure des solutions (dans les cas où getenv() ne convient pas bien entendu).
Le 11/09/06 20:13, dans <4505a745$0$5084$ba4acef3@news.orange.fr>, « gl »
C'est la seule méthode je crois qui soit portable.
Malheureusement non, la norme ne définie que :
* int main(void)
* int main(int argc, char* argv[])
Et :
int main(int argc, char *argv[], char *envp[])
C'est défini au paragraphe J.5.1 de la norme. Mais pour que cette fonction
soit portable il faut effectivement que le système le supporte :-)
Dans le paragraphe "Common extensions". Ce n'est pas une forme
normalisée et imposée par la norme mais une extension courante (comme
indiqué dans mon message précédent).
Une implémentation est libre ne pas la proposer voire de proposer une
extension syntaxiquement semblable avec un sens totalement différent (ce
qui serait particulièrement malvenu).
Ce n'est pas 100% portable même si il est vrai qu'il y a de fortes
chances de rencontrer cette extension, qui reste malgré tout la
meilleure des solutions (dans les cas où getenv() ne convient pas bien
entendu).
C'est la seule méthode je crois qui soit portable. Malheureusement non, la norme ne définie que :
* int main(void) * int main(int argc, char* argv[])
Et :
int main(int argc, char *argv[], char *envp[])
C'est défini au paragraphe J.5.1 de la norme. Mais pour que cette fonction soit portable il faut effectivement que le système le supporte :-)
Dans le paragraphe "Common extensions". Ce n'est pas une forme normalisée et imposée par la norme mais une extension courante (comme indiqué dans mon message précédent). Une implémentation est libre ne pas la proposer voire de proposer une extension syntaxiquement semblable avec un sens totalement différent (ce qui serait particulièrement malvenu).
Ce n'est pas 100% portable même si il est vrai qu'il y a de fortes chances de rencontrer cette extension, qui reste malgré tout la meilleure des solutions (dans les cas où getenv() ne convient pas bien entendu).