J'aurais tendance a dire que t'as raison : df n'est pas fait pour ça.
J'utiliserai plutot mount pour voir les FS monté.
Je comprend pas pourquoi ce leger moinssage, il me semble pas que t'ai dis de coneneries. Peut-être le "Nimporte quoi..." du début ?
Bref, il serait bon d'en savoir un peu plus sur le problème pour pouvoir faire une réponse correct. Avoir le /etc/fstab par exemple serais un bon début. Avoir le resultat de fdisk -l aussi ...
J'ai peur de dire des conneries, mais je pense pas que tu puisses faire ça (en tout cas je sais pas comment le faire).
Le fait d'avoir un PID == 1 n'est tout simplement pas possible. 1 est "reservé" à init qui est le premier porcess lancé et tout les autres dépendront de lui (même indirectement).
DONC, avoir un process avec un pid 1, c'est mort.
Maintenant, avoir un process qui dépende de 1 (PPID == 1), dépend plutot de comment tu le lances. En l'occurence, lance le avec un & à la fin et celui ci se "détachera" de ton shell et prendra comme PPID celui d'init.
Concernant ton problème (celui exposé dans ton post initial), lis un peu de doc sur fork() et ça devrais allé.
Plus globalement, qu'est-ce que tu veux faire ?
Et enfin, le Kernighan & Ritchie est un très bon bouquin pour apprendre le c.
LA meilleur distrib, c'est celle que tu connais le mieux!
Rassure toi, elle sont toutes capable de faire tourner un smtp avec spamassassin, anti-virus et même beaucoup plus ...
Maintenant, c'est a TOI de choisir sur laquelle tu te sens le plus à l'aise, ou à défaut de pas en connaitre une particulierement, peut-être la mieux documenté.
Ceci dis, debian RoX :) ou éventuellement un petit OpenBSD histoire de ...
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
void usage(char **av)
{
printf("Usage: %s [FILES] ...\n", av[0]);
}
int main (int ac, char **av)
{
int i, fd;
ssize_t byte_lu;
char buffer[1024];
if (ac < 2)
usage(av);
for (i=1; i<ac; i++)
{
fd = open(av[i],O_RDONLY);
if (fd == -1)
perror("open: ");
else
{
while((byte_lu=read(fd,buffer, sizeof(buffer))))
write(STDOUT_FILENO, buffer, byte_lu);
close(fd);
}
}
return 0;
}
Et comme je sais que d'autres ont leur solution, j'aimerais la voir aussi (si ça les dérange pas évidemment) :) (on a toujours à apprendre du code des autres)
Toujours le même problème quand dans ton précédent journal : le premier argc == ton prog lui même == a.out ! forcemment, ça doit faire bizare a ton term a chaque fois que t'execute! ==> modifie ton for() pour éviter ça.
Autrement, l'autre truc vraiment ENORME en plus de tout c'qui à été dis dans l'autre journal, c'est le fd = write(). write() ne renvoie pas un descripteur de fichier (qui d'ailleur n'est pas utiliser), mais un ssize_t (man 2 write). Je serais toi, je bouclerai avec le read comme condition.
Allé, tant que j'y suis, tu close des fichiers non ouvert et tu continu d'exit au lieu de return.
Pour moi, t'étais moin loin de la solution dans ta précedente version.
Essaye de dérouler ton algo dans ta tête et de comprendre précisemment ce qu'il fait. Là on a l'impression que tu fait des trucs sans vraiment comprendre c'que tu fait.
PS : excuse moi le ton peut être un peu hautain, mais c'est ton deuxième journal et la plupart de tes problèmes ont déjà été répondu dans le précedent.
T'as pas besoin. Boucle tant que ya des octets à lire ou que t'es pas a la fin du fichier.
Dans byte_lu, t'as la taille de c'que ton write doit afficher.
ton close() dans le while() => pas bien non plus !
Si ton fichier fait plus de 1024, il n'affichera que les premiers 1024 octets ; en gros, ton while ne sert presque a rien.
- utilise des return -1 en cas d'erreur, ça évite d'inclure stdlib.h
- N'oublie pas de return 0 a la fin de ton int main()
- N'oublie pas que argv[0] c'est ton programme lui même ...
D'abord ton ";" dans if(d==-1). Chez moi ça compile pas.
Ensuite, comme dit plus haut, ton while est pas bon non plus.
Enfin, si dans ton exos tu DOIS utiliser des appels systems, pourquoi les utiliser pour les read et pas pour les write ? (petit indice, write(0, "plop\n",5); pour afficher plop sur stdout.
Ah si, encore un truc ... quel interet de printf ton descripteur de fichier ? ce serais pas plutot le contenu de ton buffer que tu afficher ?
Vu le script demandé, son utilité et le niveau de lolitude du message, je sens bien l'étudiant qu'aime pas linux plus que ça, qui à un petit script tout pourri à faire pour le lendemain et qui veut pas se prendre la tête ...
31 minutes : n'impooooorte quoi. un des nerds se fait embrasser par une gonzesse flic.
Alors ça c'est vraiment n'importe quoi ! tout le monde sait qu'un nerd et dans une moindre mesure un geek n'embrasse pas et par extension n'approche pas de fille autrement que par son /porn de 200Go :)
Sam gamegie, sam gamegie ... ah oué ! toi, tu lis le seigneur des anneaux :)
Eprom, eprom ... (Electrically programmable read-only memory), mon ti doigt me dit que t'aimes l'électronique ?
Dans le fond, t'as raisons, tu répond précisemment à sa question :)
MAIS, il aurait été pt'être plus judicieux de demander ce qu'il entendait par racine, nan ? le monsieur poste dans débutant, donc
1) on peut facilement imaginer qu'il ne parle pas de la même racine que nous
2) on peut facilement imaginer qu'il tapera cette commande sans même savoir c'que c'est.
Excuse moi mojchris si j'te prend pour plus bête que tu ne l'est, mais dans Linux.debutant des fois ...
D'abord, merci de m'avoir fait découvrir edevelop.org.
Alors que j'étais en train de me dire que debian avait aussi droit à son dépot e17 et que j'allais me lancer dans la création de paquet deb, un élan de lucidité m'a dit d'aller chercher si ça n'éxistait pas déjà.
Effectivement, http://edevelop.org/debian existe bel et bien ! :)
Apparemment, seul sid à droit à e17, donc ami-e-s debianistes curieux d'utiliser e17, vous savez c'qui vous reste à faire ...
Possible, mais y a rien d'étonnant à voir des mdp par défaut comme ça.
Amuse toi à trouver des réseaux wifi, trouve le routeur et tu remarqueras que 9 fois sur 10, le mot de passe se trouve sur le net en 2 seconde. (nmap est ton ami pour trouver la marque et le model)
Ce genre de truc m'as été très utile lorsqu'un ami avait perdu sa clé WEP sur son routeur fourni par NOOS. J'me suis connecter dessus en ethernet et en moin de temps qu'il ne m'en faut pour l'écrire, j'étais admin dessus :)
Note : C'est marrant aussi de constater que même des admins à priori sérieux et comptétent oublie fréquemment de changer les mdp sur les routeurs.
[^] # Re: Résultat de df ?
Posté par Cereal Killer . En réponse au message lire mes fichiers windows. Évalué à 1.
J'utiliserai plutot mount pour voir les FS monté.
Je comprend pas pourquoi ce leger moinssage, il me semble pas que t'ai dis de coneneries. Peut-être le "Nimporte quoi..." du début ?
Bref, il serait bon d'en savoir un peu plus sur le problème pour pouvoir faire une réponse correct. Avoir le /etc/fstab par exemple serais un bon début. Avoir le resultat de fdisk -l aussi ...
[^] # Re: Commentaires
Posté par Cereal Killer . En réponse au message rattacher sur init. Évalué à 2.
Effectivement, rajouter un & ne le fait pas dépendre d'init, mais bel et bien du shell qui l'as lancé.
Par contre, quand on ferme le shell qui l'a lancer, le process se retrouve sans papa (orphelin) et init en reprend donc la garde.
[^] # Re: Commentaires
Posté par Cereal Killer . En réponse au message rattacher sur init. Évalué à 3.
Le fait d'avoir un PID == 1 n'est tout simplement pas possible. 1 est "reservé" à init qui est le premier porcess lancé et tout les autres dépendront de lui (même indirectement).
DONC, avoir un process avec un pid 1, c'est mort.
Maintenant, avoir un process qui dépende de 1 (PPID == 1), dépend plutot de comment tu le lances. En l'occurence, lance le avec un & à la fin et celui ci se "détachera" de ton shell et prendra comme PPID celui d'init.
Concernant ton problème (celui exposé dans ton post initial), lis un peu de doc sur fork() et ça devrais allé.
Plus globalement, qu'est-ce que tu veux faire ?
Et enfin, le Kernighan & Ritchie est un très bon bouquin pour apprendre le c.
Courage!
[^] # Re: facile
Posté par Cereal Killer . En réponse au message demande d'aide mes amis. Évalué à 4.
# apt-get install man && man man
$ cd /usr/share/doc/ && ls
Et enfin, STFW
[^] # Re: juste relais smtp ou plus ?
Posté par Cereal Killer . En réponse au message cherche distriibution linux. Évalué à 3.
Rassure toi, elle sont toutes capable de faire tourner un smtp avec spamassassin, anti-virus et même beaucoup plus ...
Maintenant, c'est a TOI de choisir sur laquelle tu te sens le plus à l'aise, ou à défaut de pas en connaitre une particulierement, peut-être la mieux documenté.
Ceci dis, debian RoX :) ou éventuellement un petit OpenBSD histoire de ...
[^] # Re: ta solution ?
Posté par Cereal Killer . En réponse au message programme c qui émule la commande cat (solution trouvée hipipip houraaaaaaaaaaaa). Évalué à 2.
# ta solution ?
Posté par Cereal Killer . En réponse au message programme c qui émule la commande cat (solution trouvée hipipip houraaaaaaaaaaaa). Évalué à 2.
[^] # Re: Accolades...
Posté par Cereal Killer . En réponse au message programme c qui émule la commande cat (amélioration). Évalué à 2.
Toujours le même problème quand dans ton précédent journal : le premier argc == ton prog lui même == a.out ! forcemment, ça doit faire bizare a ton term a chaque fois que t'execute! ==> modifie ton for() pour éviter ça.
Autrement, l'autre truc vraiment ENORME en plus de tout c'qui à été dis dans l'autre journal, c'est le fd = write(). write() ne renvoie pas un descripteur de fichier (qui d'ailleur n'est pas utiliser), mais un ssize_t (man 2 write). Je serais toi, je bouclerai avec le read comme condition.
Allé, tant que j'y suis, tu close des fichiers non ouvert et tu continu d'exit au lieu de return.
Pour moi, t'étais moin loin de la solution dans ta précedente version.
Essaye de dérouler ton algo dans ta tête et de comprendre précisemment ce qu'il fait. Là on a l'impression que tu fait des trucs sans vraiment comprendre c'que tu fait.
PS : excuse moi le ton peut être un peu hautain, mais c'est ton deuxième journal et la plupart de tes problèmes ont déjà été répondu dans le précedent.
[^] # Re: plop
Posté par Cereal Killer . En réponse au message programme c qui émule la commande cat. Évalué à 2.
Dans byte_lu, t'as la taille de c'que ton write doit afficher.
man 2 write
pour les valeurs de retour.
[^] # Re: plop
Posté par Cereal Killer . En réponse au message programme c qui émule la commande cat. Évalué à 1.
Apparemment, ça empeche pas le programme plus que ça d'écrire sur stdin :)
[^] # Re: plop
Posté par Cereal Killer . En réponse au message programme c qui émule la commande cat. Évalué à 1.
ton close() dans le while() => pas bien non plus !
Si ton fichier fait plus de 1024, il n'affichera que les premiers 1024 octets ; en gros, ton while ne sert presque a rien.
[^] # Re: ca serait pas plutot
Posté par Cereal Killer . En réponse au message programme c qui émule la commande cat. Évalué à 1.
PS : j'ai aussi une solution qui marche :)
[^] # Re: plop
Posté par Cereal Killer . En réponse au message programme c qui émule la commande cat. Évalué à 1.
- utilise des return -1 en cas d'erreur, ça évite d'inclure stdlib.h
- N'oublie pas de return 0 a la fin de ton int main()
- N'oublie pas que argv[0] c'est ton programme lui même ...
# plop
Posté par Cereal Killer . En réponse au message programme c qui émule la commande cat. Évalué à 1.
D'abord ton ";" dans if(d==-1). Chez moi ça compile pas.
Ensuite, comme dit plus haut, ton while est pas bon non plus.
Enfin, si dans ton exos tu DOIS utiliser des appels systems, pourquoi les utiliser pour les read et pas pour les write ? (petit indice, write(0, "plop\n",5); pour afficher plop sur stdout.
Ah si, encore un truc ... quel interet de printf ton descripteur de fichier ? ce serais pas plutot le contenu de ton buffer que tu afficher ?
# bof
Posté par Cereal Killer . En réponse au message Un code simple que je ne trouve pas. Évalué à 5.
Commence par installer un linux, ça peut aider.
[^] # Re: C'est marrant...
Posté par Cereal Killer . En réponse au journal Numb3rs ... et les autres. Évalué à 8.
Alors ça c'est vraiment n'importe quoi ! tout le monde sait qu'un nerd et dans une moindre mesure un geek n'embrasse pas et par extension n'approche pas de fille autrement que par son /porn de 200Go :)
[^] # Re: Je peux apporter de l'eau au moulin ? (pardon au trOllin)
Posté par Cereal Killer . En réponse au journal Itiz ze Trolledeille !. Évalué à 1.
Sam gamegie, sam gamegie ... ah oué ! toi, tu lis le seigneur des anneaux :)
Eprom, eprom ... (Electrically programmable read-only memory), mon ti doigt me dit que t'aimes l'électronique ?
Vive les pseudos et les logins \o/
[^] # Re: Je peux apporter de l'eau au moulin ? (pardon au trOllin)
Posté par Cereal Killer . En réponse au journal Itiz ze Trolledeille !. Évalué à 1.
toi t'as regardé couet
[^] # Re: international
Posté par Cereal Killer . En réponse au journal Nouveaux pilotes stables nvidia (propriétaires). Évalué à 1.
=> http://up.mezimages.com/up/11/1288664da_dlfp_tux.jpg
[^] # Re: toutafait
Posté par Cereal Killer . En réponse au message Vider racine serveur. Évalué à 2.
MAIS, il aurait été pt'être plus judicieux de demander ce qu'il entendait par racine, nan ? le monsieur poste dans débutant, donc
1) on peut facilement imaginer qu'il ne parle pas de la même racine que nous
2) on peut facilement imaginer qu'il tapera cette commande sans même savoir c'que c'est.
Excuse moi mojchris si j'te prend pour plus bête que tu ne l'est, mais dans Linux.debutant des fois ...
# tripwire ?
Posté par Cereal Killer . En réponse au message Suivre changements arborescence. Évalué à 2.
Il y a surement mieux / plus récent, mais c'est le seul que j'ai utilisé et que je connais un peu.
Les mots magique sont : integrity checker file system directory
# rtfm
Posté par Cereal Killer . En réponse au message socket. Évalué à 5.
# debian ?
Posté par Cereal Killer . En réponse au journal E17 empaqueté pour ubuntu edgy PPC. Évalué à 4.
Alors que j'étais en train de me dire que debian avait aussi droit à son dépot e17 et que j'allais me lancer dans la création de paquet deb, un élan de lucidité m'a dit d'aller chercher si ça n'éxistait pas déjà.
Effectivement, http://edevelop.org/debian existe bel et bien ! :)
Apparemment, seul sid à droit à e17, donc ami-e-s debianistes curieux d'utiliser e17, vous savez c'qui vous reste à faire ...
[^] # Re: vlc cassé ?
Posté par Cereal Killer . En réponse au message [Freeplayer] vlc 0.8.6 segfault (debian unstable). Évalué à 2.
J'y avais même pas pensé.
Merci encore :)
[^] # Re: mouaif
Posté par Cereal Killer . En réponse au journal Devenez riche grâce à Google !!. Évalué à 5.
Amuse toi à trouver des réseaux wifi, trouve le routeur et tu remarqueras que 9 fois sur 10, le mot de passe se trouve sur le net en 2 seconde. (nmap est ton ami pour trouver la marque et le model)
=> http://www.phenoelit.de/dpl/dpl.html
Ce genre de truc m'as été très utile lorsqu'un ami avait perdu sa clé WEP sur son routeur fourni par NOOS. J'me suis connecter dessus en ethernet et en moin de temps qu'il ne m'en faut pour l'écrire, j'étais admin dessus :)
Note : C'est marrant aussi de constater que même des admins à priori sérieux et comptétent oublie fréquemment de changer les mdp sur les routeurs.