A voir également:
- [COMMANDE] Etrangeté de Nmap
- Invite de commande - Guide
- Commande terminal mac - Guide
- Commande dism - Guide
- Diskpart commande - Guide
- Commande scannow - Guide
4 réponses
Dans une commande, il y a plusieurs niveaux de sorties.
Il y a la sortie standard, echo "bonjor" par exemple.
Mais les messages d'erreurs peuvent sortir sur une autre sortie, ce qui permet de les voir justement !
]$ echo `commandinconnu` > fichier
Va renvoyer que la commande est inconnue, mais pas dans le fichier mais sur la sortie du terminal.
Pour choisir quelle sortie on redirige, c'est echo "truc" 2> fichier pour rediriger la 2eme sortie, echo "truc" 3> fichier pour la 3eme sortie, etc.
pour toutes les sorties, c'est &> je crois.
Donc php doit te renvoyer une seule couche de sortie (celle par defaut, > ). Regrde dans les logs d'apache pour voir si la sortie est redrigée par la ...
Il y a la sortie standard, echo "bonjor" par exemple.
Mais les messages d'erreurs peuvent sortir sur une autre sortie, ce qui permet de les voir justement !
]$ echo `commandinconnu` > fichier
Va renvoyer que la commande est inconnue, mais pas dans le fichier mais sur la sortie du terminal.
Pour choisir quelle sortie on redirige, c'est echo "truc" 2> fichier pour rediriger la 2eme sortie, echo "truc" 3> fichier pour la 3eme sortie, etc.
pour toutes les sorties, c'est &> je crois.
Donc php doit te renvoyer une seule couche de sortie (celle par defaut, > ). Regrde dans les logs d'apache pour voir si la sortie est redrigée par la ...
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
1 juin 2005 à 19:17
1 juin 2005 à 19:17
Bonsoir,
En fait quand un processus démarre, il dispose des 3 descripteurs de fichiers qui sont déjà ouverts et en plus sont configurés par le processus père mais pas par le noyau.
Le 1er descripteur : numéro 0 c'est l'entrée standard (stdin)
Le 2ème descripteur : numéro 1 c'est la sortie standard (stdout)
Le 3ème descripteur : numéro 2 c'est la sortie d'erreur standard (stderr)
Donc tu peut diriger dans un fichier les 2 sortie (stdout et stderr)
Pour rédiger les sorties normales tu utilise > et/ou >>
Pour rédiger les sorties d'erreurs tu utilises 2> et/ou 2>>
Pout regrouper les 2 sorties on utilise 2>&1 (commande qui ne fusionne pas les 2 sorties mais recopie simplement la sortie standard sur celle d'erreur)
Après il y a les rédirections avancées qui sont rarement utiisées.
On peut utiliser les rédirections avancées ( n<, >n, >>n ) lorsqu'on construit par exemple un système qui repose sur des applications écrites en C, coordonnées par des scripts shell.
En fait quand un processus démarre, il dispose des 3 descripteurs de fichiers qui sont déjà ouverts et en plus sont configurés par le processus père mais pas par le noyau.
Le 1er descripteur : numéro 0 c'est l'entrée standard (stdin)
Le 2ème descripteur : numéro 1 c'est la sortie standard (stdout)
Le 3ème descripteur : numéro 2 c'est la sortie d'erreur standard (stderr)
---------------0 : entrée standard--------<----données----clavier (ou fichier) processus------1 : sortie standard-----message-->--- ---------------2 : sortie erreurs--------message-->--| ---------------------------------------------------------| écran
Donc tu peut diriger dans un fichier les 2 sortie (stdout et stderr)
Pour rédiger les sorties normales tu utilise > et/ou >>
Pour rédiger les sorties d'erreurs tu utilises 2> et/ou 2>>
Pout regrouper les 2 sorties on utilise 2>&1 (commande qui ne fusionne pas les 2 sorties mais recopie simplement la sortie standard sur celle d'erreur)
Après il y a les rédirections avancées qui sont rarement utiisées.
"Ce post pourrait faire partie aussi du forum programmaion "
On peut utiliser les rédirections avancées ( n<, >n, >>n ) lorsqu'on construit par exemple un système qui repose sur des applications écrites en C, coordonnées par des scripts shell.
Merci de vos réponses
Ce que je ne comprends pas , c'est que la 2ème ligne qui s'affiche sur console n'est pas un ligne d'erreur.
En console j'ai :
"
" //pour chaque machine.
En Php j'ai seulement :
"
" //pour chaque machine.
De plus, j'ai déjà testé le 2>&1 dans mon exec() et le problème persiste... :/
Ce que je ne comprends pas , c'est que la 2ème ligne qui s'affiche sur console n'est pas un ligne d'erreur.
En console j'ai :
"
Host [@IP] appears to be up. MAC Address: [@MAC] (type machine)
" //pour chaque machine.
En Php j'ai seulement :
"
Host 170.60.248.1 appears to be up.
" //pour chaque machine.
De plus, j'ai déjà testé le 2>&1 dans mon exec() et le problème persiste... :/