Ses requirements sur la température de la pièce dans laquelle il dort.
Le ridicule de cette exigence se discute. Pour certains, l'endormissement est facile et rapide en toute situation, ils sont bien chanceux. Pour moi, un peu de lumière suffit à me gêner considérablement. Pour Stallman, la température de la pièce a l'air d'être un problème. N'oublie pas que la plupart du temps, quand il voyage, il enchaîne plusieurs événements sur une période courte. C'est mieux s'il est un peu en forme, non ?
avais-tu relancé un nouveau shell ou sourcé ce .inputrc dans le shell courant ?
Il me semble que ça peut aussi dépendre du window manager. Ca fait longtemps que j'ai configuré ça sur tous mes environnements, alors je ne me souviens plus trop, mais il faut p-e redémarrer une session X. En tout cas, sur une console (F1-F6) et sur une machine distante, ça doit marcher.
cf mon commentaire précédent, en C, cette expression est indéfinie (en C++ aussi d'après mes tests).
Je viens de faire quelques tests sur Linux/Solaris/HPUX avec les compilos C et C++ respectifs (gcc/g++, cc/CC, cc/aCC) et, fonction des systèmes, j'ai 6, 7, oui, 7 (?!) ou 9.
The behavior of code which contains multiple, ambiguous side effects has always been undefined. (Loosely speaking, by ``multiple, ambiguous side effects'' we mean any combination of increment, decrement, and assignment operators (++, --, =, +=, -=, etc.) in a single expression which causes the same object either to be modified twice or modified and then inspected.
ah oui, j'ai aussi enlevé un niveau d'indirection sur items dans le memset. Ton memset travaillait juste sur l'entrée i de ton tableau items au lieu de travailler sur le tableau.
et oui, mais ça, ça ne va pas !
ITEM_SIZE_STEP vaut 1, mais tu veux mettre 0 pour un pointeur, qui tient sur plus qu'un seul octet.
ça serait mieux comme ça:
memset(items+i,0,ITEM_SIZE_STEP*sizeof(char**));
tu aurais pu ajouter un log en fin de boucle pour afficher *(items + i), ça t'aurais permis de te rendre compte que memset ne faisait pas ce que tu attendais (en tout cas, c'est comme ça que j'ai fait).
Pour conclure (désolé, je radote :), n'oublie pas de libérer la mémoire allouée par getline.
hmmm faut voir comment il était. Peux-tu poster la version avec memset ?
(sinon, pour info, j'ai fait 2/3 tests avant de poster, j'ai une version qui marche que je pourrais mettre si tu veux, mais je pense que c'est plus intéressant si on réfléchit sur ton code)
pour moi, ce qui caractérise un Fanboy, c'est qu'il pense que le truc dont il est fan est le meilleur dans l'absolu, et que le truc en question répond à tous les besoins que quiconque pourrait avoir en la matière.
Avec la multiplicité/vivacité des différentes distribs Linux, au bout de quelques années, je dirais qu'on est vacciné. On comprend que Ubuntu n'est pas pour le même public que Slack/Arch/Redhat/..., que enlightenment/gnome/kde/... ont chacun des forces et des faiblesses, que Windows c'est très bien pour pleins de gens, que vim c'est mieux et que le Python, c'est bon ... ah mince, une résurgence :)
If *lineptr is NULL, then getline() will allocate a buffer for storing the line, which should be freed by the user program. (In this case, the value in *n is ignored.)
Alternatively, before calling getline(), *lineptr can contain a pointer to a malloc(3)-allo‐cated buffer *n bytes in size. If the buffer is not large enough to hold the line, getline() resizes it with realloc(3), updating *lineptr and *n as necessary.
le problème ici c'est que tu laisses getline faire l'allocation de chaque ligne, mais tu ne t'assures pas que items + i soit bien NULL avant chaque entrée dans getline.
Au passage, il faudrait aussi que tu libères les blocs alloués par getline.
dans le paragraphe "la locomotive" (<- ce Steve Jobs alors, il a même inventé le train !?), sous la photo des iPod de toute génération, le sous paragraphe commence par:
comment ne pas oublier
je serais assez d'accord, mais je pense que c'est un contre sens. Il faudrait plutôt "comment oublier" ou "comment ne pas mentionner". Au passage, on pourrait aussi finir la phrase (à rallonge) par un point d'exclamation.
sinon, à chaque fois que j'utilise un GPS, j'ai une pensée émue pour le fournisseur de stylos d'Albert Einstein.
j'ai eu le temps de l'apercevoir, je l'ai trouvé plus drôle que méchant. Il était évidemment d'un intérêt nul (mais il me semble que c'était assumé :), donc il méritait largement autant d'exister que celui ci.
bizarre, à la lecture, il n'y a rien qui me saute aux yeux.
Si tu es en bash, tu peux ajouter, vers le début de ton script:
set -x
bash passe en mode debug et affiche le déroulement du script.
attention aussi au piège classique, cron démarre les jobs avec /bin/sh
si tu veux utiliser un autre shell, la première ligne du script doit être le chemin vers l'interpréteur. Par exemple, pour bash :
#!/bin/bash
juste pour savoir, tu essaies déjà de mettre ton script en cron ou tu le testes à la main pour l'instant ?
je pense avoir déjà fait des trucs plus complexes que ça ;) il me semble que j'ai compris.
ce que je dis, c'est pour que ton script de watchdog (que tu es en train d'écrire) effectue une action en fonction de l'état du service, il faut que ton script de service dans /etc/init.d/ton_service status renvoie des valeurs différentes selon que le service est démarré ou pas.
donc, pour reformuler ma question, quand ton service est arrété, est-ce que /etc/init.d/ton_service renvoie bien une valeur différente de 0 ?
Vérifie que ton script de démarrage de service renvoie bien quelque chose différent de 0 sur la commande status quand ton service est arrété, sinon, $? vaut toujours 0, et tu ne passes jamais dans le start.
"ça ne fonctionne pas", c'est un peu juste. Prend l'habitude de décrire plus précisément ce qui ne marche pas, les éventuels messages affichés par ton script, etc.
sinon, là, si tu as copié/collé ton script tel quel, il faut que tu rajoutes quelques espaces pour bien séparer les différents éléments du test.
essaie aussi d'indenter ton code, ça le rend plus lisible.
if[$? -ne 0]; then
logguer "Processus ${PS} not started"
start
fi
devient
if[$? -ne 0 ]; thenlogguer "Processus ${PS} not started"
start
fi
[^] # Re: C'est fameux
Posté par gaaaaaAab . En réponse au journal Journal bookmark The Stallman Dialogues. Évalué à 5.
Le ridicule de cette exigence se discute. Pour certains, l'endormissement est facile et rapide en toute situation, ils sont bien chanceux. Pour moi, un peu de lumière suffit à me gêner considérablement. Pour Stallman, la température de la pièce a l'air d'être un problème. N'oublie pas que la plupart du temps, quand il voyage, il enchaîne plusieurs événements sur une période courte. C'est mieux s'il est un peu en forme, non ?
[^] # Re: S'il vous plait
Posté par gaaaaaAab . En réponse au journal Mouammar Kadhafi est Bronsonisé. Évalué à 10.
pfff tout ce comique de répétition, c'est vraiment drôle qu'une seule fois.
[^] # Re: Alsamixer
Posté par gaaaaaAab . En réponse au message Désactiver bip système. Évalué à 2.
avais-tu relancé un nouveau shell ou sourcé ce .inputrc dans le shell courant ?
Il me semble que ça peut aussi dépendre du window manager. Ca fait longtemps que j'ai configuré ça sur tous mes environnements, alors je ne me souviens plus trop, mais il faut p-e redémarrer une session X. En tout cas, sur une console (F1-F6) et sur une machine distante, ça doit marcher.
[^] # Re: Alsamixer
Posté par gaaaaaAab . En réponse au message Désactiver bip système. Évalué à 2.
ah intéressant le coup du alsamixer ! je note.
si on ne peut pas installer alsamixer (genre une machine sur laquelle on ne serait pas root), on peut aussi créer un fichier ~/.inputrc contenant
[^] # Re: Gentil Google
Posté par gaaaaaAab . En réponse au journal Google+ a gagné ?. Évalué à 8.
Certes, mais il n'y a pas d'opposition entre identité stable et anonymat (cf Maitre Eolas)
[^] # Re: Gentil Google
Posté par gaaaaaAab . En réponse au journal Google+ a gagné ?. Évalué à 6.
outre les questions vie privée, les déclarations de Schmidt sur l'anonymat + la politique de "nom réel", c'est rédhibitoire.
[^] # Re: déjà ça dépend
Posté par gaaaaaAab . En réponse au message Question en programmation. Évalué à 2.
cf mon commentaire précédent, en C, cette expression est indéfinie (en C++ aussi d'après mes tests).
Je viens de faire quelques tests sur Linux/Solaris/HPUX avec les compilos C et C++ respectifs (gcc/g++, cc/CC, cc/aCC) et, fonction des systèmes, j'ai 6, 7, oui, 7 (?!) ou 9.
[^] # Re: Oké, voyons…
Posté par gaaaaaAab . En réponse au message Question en programmation. Évalué à 3.
valide en C ? heu ... oui, ça va compiler, mais le résultat de a+=--a + a* ++a est indéfini !
cf la FAQ de comp.lang.c :
Pour C++ et Java, il faudrait vérifier.
[^] # Re: vive le man
Posté par gaaaaaAab . En réponse au message getline et realloc sont dans une boucle. Évalué à 2.
tant que ITEM_SIZE_STEP vaut 1, oui, mais ça devient intéressant pour des valeurs plus élevées.
[^] # Re: vive le man
Posté par gaaaaaAab . En réponse au message getline et realloc sont dans une boucle. Évalué à 2.
heu non, il travaillait pas sur l'entrée i, mais il travaillait pas au bon endroit, ça, c'est sûr :)
[^] # Re: vive le man
Posté par gaaaaaAab . En réponse au message getline et realloc sont dans une boucle. Évalué à 2.
ah oui, j'ai aussi enlevé un niveau d'indirection sur items dans le memset. Ton memset travaillait juste sur l'entrée i de ton tableau items au lieu de travailler sur le tableau.
[^] # Re: vive le man
Posté par gaaaaaAab . En réponse au message getline et realloc sont dans une boucle. Évalué à 2.
et oui, mais ça, ça ne va pas !
ITEM_SIZE_STEP vaut 1, mais tu veux mettre 0 pour un pointeur, qui tient sur plus qu'un seul octet.
ça serait mieux comme ça:
tu aurais pu ajouter un log en fin de boucle pour afficher *(items + i), ça t'aurais permis de te rendre compte que memset ne faisait pas ce que tu attendais (en tout cas, c'est comme ça que j'ai fait).
Pour conclure (désolé, je radote :), n'oublie pas de libérer la mémoire allouée par getline.
[^] # Re: vive le man
Posté par gaaaaaAab . En réponse au message getline et realloc sont dans une boucle. Évalué à 2.
hmmm faut voir comment il était. Peux-tu poster la version avec memset ?
(sinon, pour info, j'ai fait 2/3 tests avant de poster, j'ai une version qui marche que je pourrais mettre si tu veux, mais je pense que c'est plus intéressant si on réfléchit sur ton code)
# fanboy = absolu
Posté par gaaaaaAab . En réponse au journal Suis-je un FanBoy ?. Évalué à 6.
pour moi, ce qui caractérise un Fanboy, c'est qu'il pense que le truc dont il est fan est le meilleur dans l'absolu, et que le truc en question répond à tous les besoins que quiconque pourrait avoir en la matière.
Avec la multiplicité/vivacité des différentes distribs Linux, au bout de quelques années, je dirais qu'on est vacciné. On comprend que Ubuntu n'est pas pour le même public que Slack/Arch/Redhat/..., que enlightenment/gnome/kde/... ont chacun des forces et des faiblesses, que Windows c'est très bien pour pleins de gens, que vim c'est mieux et que le Python, c'est bon ... ah mince, une résurgence :)
[^] # Re: id
Posté par gaaaaaAab . En réponse au message Contrôle de l'utilisateur dans un shell de service. Évalué à 2.
c'est vrai, mais il y a des pièges vicieux avec les variables d'environnement :
# vive le man
Posté par gaaaaaAab . En réponse au message getline et realloc sont dans une boucle. Évalué à 2.
man getline:
le problème ici c'est que tu laisses getline faire l'allocation de chaque ligne, mais tu ne t'assures pas que items + i soit bien NULL avant chaque entrée dans getline.
Au passage, il faudrait aussi que tu libères les blocs alloués par getline.
# grammaire
Posté par gaaaaaAab . En réponse à la dépêche Steve Jobs (1955-2011). Évalué à 3.
dans le paragraphe "la locomotive" (<- ce Steve Jobs alors, il a même inventé le train !?), sous la photo des iPod de toute génération, le sous paragraphe commence par:
je serais assez d'accord, mais je pense que c'est un contre sens. Il faudrait plutôt "comment oublier" ou "comment ne pas mentionner". Au passage, on pourrait aussi finir la phrase (à rallonge) par un point d'exclamation.
sinon, à chaque fois que j'utilise un GPS, j'ai une pensée émue pour le fournisseur de stylos d'Albert Einstein.
[^] # Re: Ce commentaire a été supprimé par l'équipe de modération.
Posté par gaaaaaAab . En réponse au journal Décence et respect autour d'un décès. Évalué à 6.
j'ai eu le temps de l'apercevoir, je l'ai trouvé plus drôle que méchant. Il était évidemment d'un intérêt nul (mais il me semble que c'était assumé :), donc il méritait largement autant d'exister que celui ci.
[^] # Re: En résumé…
Posté par gaaaaaAab . En réponse au journal Décence et respect autour d'un décès. Évalué à 7.
franchement, regarde le niveau des réactions que tu cites. Il n'aurait déjà plus du te rester de bras à perdre après les avoir lus ...
[^] # Re: [ est une commande
Posté par gaaaaaAab . En réponse au message Script de controle et de redémarrage de service. Évalué à 2.
tu as du zappé un des espaces dont je parlais là
[^] # Re: [ est une commande
Posté par gaaaaaAab . En réponse au message Script de controle et de redémarrage de service. Évalué à 2.
ça viendra :)
bizarre, à la lecture, il n'y a rien qui me saute aux yeux.
Si tu es en bash, tu peux ajouter, vers le début de ton script:
set -x
bash passe en mode debug et affiche le déroulement du script.
attention aussi au piège classique, cron démarre les jobs avec /bin/sh
si tu veux utiliser un autre shell, la première ligne du script doit être le chemin vers l'interpréteur. Par exemple, pour bash :
juste pour savoir, tu essaies déjà de mettre ton script en cron ou tu le testes à la main pour l'instant ?
[^] # Re: [ est une commande
Posté par gaaaaaAab . En réponse au message Script de controle et de redémarrage de service. Évalué à 2.
je pense avoir déjà fait des trucs plus complexes que ça ;) il me semble que j'ai compris.
ce que je dis, c'est pour que ton script de watchdog (que tu es en train d'écrire) effectue une action en fonction de l'état du service, il faut que ton script de service dans /etc/init.d/ton_service status renvoie des valeurs différentes selon que le service est démarré ou pas.
donc, pour reformuler ma question, quand ton service est arrété, est-ce que /etc/init.d/ton_service renvoie bien une valeur différente de 0 ?
[^] # Re: [ est une commande
Posté par gaaaaaAab . En réponse au message Script de controle et de redémarrage de service. Évalué à 3.
c'est ton script de service dont tu parlais là : http://linuxfr.org/forums/programmationshell/posts/contr%C3%B4le-de-lutilisateur-dans-un-shell-de-service qui t'affiche ça ?
Vérifie que ton script de démarrage de service renvoie bien quelque chose différent de 0 sur la commande status quand ton service est arrété, sinon, $? vaut toujours 0, et tu ne passes jamais dans le start.
# [ est une commande
Posté par gaaaaaAab . En réponse au message Script de controle et de redémarrage de service. Évalué à 3.
"ça ne fonctionne pas", c'est un peu juste. Prend l'habitude de décrire plus précisément ce qui ne marche pas, les éventuels messages affichés par ton script, etc.
sinon, là, si tu as copié/collé ton script tel quel, il faut que tu rajoutes quelques espaces pour bien séparer les différents éléments du test.
essaie aussi d'indenter ton code, ça le rend plus lisible.
devient
[^] # Re: id
Posté par gaaaaaAab . En réponse au message Contrôle de l'utilisateur dans un shell de service. Évalué à 1.
ah oui, pour tout ça, man est ton ami, même si je veux bien admettre que le man de bash (ou autre shell) est un peu touffu :)