bernie38
Waldorf (le pote à Statler)
Messages : 11 421 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 24 novembre 2004 - 07 h 46 m 19 s |
|
|
Reprise du message précédent :
Le 24 novembre 2004 - 03 h 45, Petit_PimoOosE a écrit :
tu n'as pas droit aux tubes ? ni même à stdio.h ?
|
ben oui, les tubes, que j'ai appelé pipe, ça pourrait le faire...
Sinon, woofy, je comprends pas trop bien quand tu dis que tu transformes la chaine en binaire : ça veut dire quoi exactement ? (:rougir: j'ai pas trop regardé ton code, désolé) pour moi, binaire, hexa ou autre, c'est jamais qu'une représentation "humaine"...
|
|
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 290 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 24 novembre 2004 - 07 h 59 m 29 s |
|
|
comment voulez vous faire en les pipant?
Transformation de la chaine en binaire : chaque caractère a un code ascii, compris entre 32 et 126 pour les caractères affichable.
Il suffit donc juste de transformer ce code decimal en binaire : suite de 0 et de 1.
|
|
| |
Totalement inutile, donc completement indispensable 
|
bernie38
Waldorf (le pote à Statler)
Messages : 11 421 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 24 novembre 2004 - 08 h 19 m 03 s |
|
|
Le 24 novembre 2004 - 07 h 59, Woofy a écrit :
comment voulez vous faire en les pipant?
Transformation de la chaine en binaire : chaque caractère a un code ascii, compris entre 32 et 126 pour les caractères affichable.
Il suffit donc juste de transformer ce code decimal en binaire : suite de 0 et de 1.
|
toujours pas compris 
quelle est ta chaine de départ (un exemple) et la chaine après transformation ? Pour la machine, une chaine est une chaine, peu importe ce que tu as mis dedans. A moins que tu fasses une transfo big endian <-> little indian (i.e format "network", je vois toujours pas (bouché le bernie...)
|
|
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 290 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 24 novembre 2004 - 08 h 28 m 32 s |
|
|
non pas ca.
Chaine de depart : ab
code ascii du caractere a : 97 en décimal => 1100001 en binaire
code ascii du caractere b : 98 en décimal => 1100010 en binaire
Chaine d'arrivée : 1100001 1100010
Voila.
Et j'utilise un signal pour transmettre les 0, un autre signal pour transmettre les 1.
|
|
| |
Totalement inutile, donc completement indispensable 
|
bernie38
Waldorf (le pote à Statler)
Messages : 11 421 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 24 novembre 2004 - 08 h 51 m 32 s |
|
|
c'est pour satisfaire à une spécif ? Parce que sinon, pourquoi ne pas transmettre ab directement ? parce que générer un signal pour chaque bit, ça risque d'être un tout petit peu cher. Mais si c'est dans la demande d'origine, tu peux rien faire d'autre...
|
|
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 290 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 24 novembre 2004 - 09 h 17 m 01 s |
|
|
Comment veut-tu transferer la chaine directement?
Le client et le serveur sont 2 executables différents, qui tournent sur 2 terminaux différents en même temps.
|
|
| |
Totalement inutile, donc completement indispensable 
|
bernie38
Waldorf (le pote à Statler)
Messages : 11 421 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 24 novembre 2004 - 09 h 20 m 10 s |
|
|
Le 24 novembre 2004 - 09 h 17, Woofy a écrit :
Comment veut-tu transferer la chaine directement?
Le client et le serveur sont 2 executables différents, qui tournent sur 2 terminaux différents en même temps.
|
par des pipes
bon, oublie ma question, c'est hors sujet, visiblement, c'est plus du domaine de la conception
|
|
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
gege38
- Ancien Modérateur -
Chief of the (¯`·.__[T3aM.BouL3T©]__.·´¯) Potatoe Reloaded
Messages : 14 102 Inscrit le 05/02/03
Ville : Domène
Non connecté
|
|
Posté le 24 novembre 2004 - 10 h 06 m 03 s |
|
|
Le 24 novembre 2004 - 09 h 20, bernie38 a écrit :
par des pipes
|
+1
A mon avis la soluce repose plus sur cet aspect que les signaux... Les signaux c'est juste pour faire remonter des infos de controle... (ok je caricature)
|
|
| |
" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld
|
bernie38
Waldorf (le pote à Statler)
Messages : 11 421 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 24 novembre 2004 - 10 h 09 m 25 s |
|
|
ben, c'est ce que je lui ai suggéré hier soir. Mais ça a pas grand chose à voir avec C, plutôt avec Unix... Bon, si l'énoncé est comme ça, il a pas trop le choix, et faudrait former ses profs à Unix
|
|
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
iraysyvalo
-
Messages : 9 647 Inscrit le 19/11/02
Ville : Lyon
Non connecté
|
|
Posté le 24 novembre 2004 - 10 h 32 m 39 s |
|
|
D'ou ma question d'hier aussi .. car faire du Morse binaire avec les signaux ..
|
|
| |
Pour un ban rapide et garanti sur ce forum, argumentez vos posts, dites simplement la verite, parlez de la realite et les leche-culs d'un cote et les maniaques du ban de l'autre se feront un plaisir de vous envoyer au purgatoire aussi sec.
|
bernie38
Waldorf (le pote à Statler)
Messages : 11 421 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 24 novembre 2004 - 10 h 39 m 50 s |
|
|
Le 24 novembre 2004 - 10 h 32, iraysyvalo a écrit :
D'ou ma question d'hier aussi .. car faire du Morse binaire avec les signaux .. 
|
oauip, question perf on a vu mieux
[HS]
tu as eu le temps de regarder mon petit prog ? 
[/HS]
|
|
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
iraysyvalo
-
Messages : 9 647 Inscrit le 19/11/02
Ville : Lyon
Non connecté
|
|
Posté le 24 novembre 2004 - 10 h 41 m 03 s |
|
|
Le 24 novembre 2004 - 00 h 16, Woofy a écrit :
Non je suis pas obligé d'utiliser les signaux, mais je peut pas faire autrement!
|
Je ne comprends pas ta deuxieme partie de phrase mais pour la premiere partie, on vous a conseille quoi comme bouqin de systeme d'exploitation ?
Si on ne vous en a conseille aucun, c'est dommage mais j'ai l'impression que vous suivez la progression assez classique d'un cours de systeme actuellement.
PS : Les pipes ou tubes en francais ..
EDIT : Gros HS pour Bernie : check tes MP
|
|
| |
Message édité 1 fois, la dernière par iraysyvalo le 24 novembre 2004 - 11 h 16. |
| |
Pour un ban rapide et garanti sur ce forum, argumentez vos posts, dites simplement la verite, parlez de la realite et les leche-culs d'un cote et les maniaques du ban de l'autre se feront un plaisir de vous envoyer au purgatoire aussi sec.
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 290 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 24 novembre 2004 - 12 h 17 m 54 s |
|
|
Je sais ce que c'est qu'un pipe en unix, genre cat toto | wc-l, mais ce n'est pas ce qui est demande non?
Comment on fait avec des pipe? Je vous suis plus!
|
|
| |
Totalement inutile, donc completement indispensable 
|
bernie38
Waldorf (le pote à Statler)
Messages : 11 421 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 24 novembre 2004 - 13 h 17 m 34 s |
|
|
c'est pas tout à fait ces pipes là (enfin, je veux dire que c'est pas à travers le shell que tu peux les utiliser dans ce cas précis puisque tu dois le faire en C), c'est des sortes de fichiers...
|
|
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 290 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 24 novembre 2004 - 13 h 24 m 57 s |
|
|
T'aurais pas un exemple?
Mais bon, en y reflechissant, chui pas sur qu'on ai le droit de ne pas utiliser les signaux.
De toute facon j'ai presque fini, plus qu'a corriger un gros bug genant sur le serveur et compiler sans warning sur sun et alpha (-4 si ca ne compile pas sous sun et alpha!)
|
|
| |
Totalement inutile, donc completement indispensable 
|
bernie38
Waldorf (le pote à Statler)
Messages : 11 421 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 24 novembre 2004 - 13 h 26 m 51 s |
|
|
pas d'exemple sous la main, mais en cherchant google, ça doit se trouver
|
|
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
bernie38
Waldorf (le pote à Statler)
Messages : 11 421 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 24 novembre 2004 - 13 h 28 m 28 s |
|
|
ben justement, hop (brut de décoffrage, j'ai juste lu en diagonale) :
// =========================================================================
// Pipe.c
// J. Menu - http://cui.unige.ch/DI/cours/SystInformatiques
//
// $Id: Pipe.c,v 1.1.1.4 2004/01/18 22:06:31 menu Exp $
// =========================================================================
// -------------------------------------------------------------------------
// Pipe
// -------------------------------------------------------------------------
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h> // pour 'pipe ()'
#include "Utilitaires.h"
// -------------------------------------------------------------------------
// Production
// -------------------------------------------------------------------------
void Production (FILE * leFlotDEcriture)
{
int i;
const int LIMITE = 5;
for (i = 1; i <= LIMITE; i ++)
{
fprintf (leFlotDEcriture, "%2d : %s\n", i, "Hello world !");
fflush (leFlotDEcriture);
} // for
} // Production
// -------------------------------------------------------------------------
// Consommation
// -------------------------------------------------------------------------
void Consommation (FILE * leFlotDeLecture)
{
char tampon [8192];
while (
! feof (leFlotDeLecture)
&&
! ferror (leFlotDeLecture)
&&
fgets (tampon, sizeof (tampon), leFlotDeLecture) != NULL
)
fputs (tampon, stdout);
} // Consommation
// -------------------------------------------------------------------------
// main
// -------------------------------------------------------------------------
int main (int argc, char * argv [])
{
printf (
"--> Le parent cree un enfant avec qui il va communiquer\n"
" au moyen d'un pipe.\n"
" On peut laisser un peu de temps a l'enfant avant que\n"
" le parent ne finisse lui-meme avec une option,\n"
" le temps que tout soit sorti sur stdout.\n\n" );
int laisserFinirLEnfant = 0;
// on decode les arguments d'appel
// -------------------------------
char * usage = "--> Usage : %s [-h | -l(aisser finir l'enfant)]\n";
if (argc > 2)
Erreur (usage, argv [0]);
if (argc == 2)
{
if (! strcmp (argv [1], "-h"))
{
Avertissement (usage, argv [0]);
exit (0);
}
else if (! strcmp (argv [1], "-l"))
laisserFinirLEnfant = 1;
else
Erreur (usage, argv [0]);
}
int descripteursDeFichiers [2];
// on cree la paire de descripteurs pour le pipe
if (pipe (descripteursDeFichiers) < 0)
Erreur ("Probleme pour creer le pipe");
int descrCoteLecture = descripteursDeFichiers [0];
int descrCoteEcriture = descripteursDeFichiers [1];
switch (fork ())
{
case -1 :
Erreur ("'fork ()' a echoue");
break;
case 0 :
{
// ENFANT
// ------
FILE * flotDeLecture;
printf ("L'enfant a le pid %7d\n", getpid ());
// on ferme le cote ecriture du pipe, inutile pour nous
if (close (descrCoteEcriture) < 0)
Erreur ("Probleme pour fermer le cote ecriture du pipe par l'enfant");
// on associe le cote lecture du pipe a un stream (plus haut niveau)
if ((flotDeLecture = fdopen (descrCoteLecture, "r")) < 0)
Erreur (
"Probleme pour associer le cote lecture du pipe a un stream par l'enfant" );
Consommation (flotDeLecture);
// on ferme le cote lecture du pipe
if (close (descrCoteLecture) < 0)
Erreur ("Probleme pour fermer le cote lecture du pipe par l'enfant");
}
break;
default :
{
// PARENT
// ------
FILE * flotDEcriture;
printf ("Le parent a le pid %7d\n", getpid ());
// on ferme le cote lecture du pipe, inutile pour nous
if (close (descrCoteLecture) < 0)
Erreur ("Probleme pour fermer le cote lecture du pipe par le parent");
// on associe le cote ecriture du pipe a un stream (plus haut niveau)
if ((flotDEcriture = fdopen (descrCoteEcriture, "w")) < 0)
Erreur (
"Probleme pour associer le cote ecriture du pipe a un stream par le parent" );
Production (flotDEcriture);
// on ferme le cote ecriture du pipe
if (close (descrCoteEcriture) < 0)
Erreur ("Probleme pour fermer le cote ecriture du pipe par le parent");
// on laisse un peu de temps a l'enfant pour terminer son travail
// pour une vraie synchronisation, voir "SynchroParentEnfant.c"
if (laisserFinirLEnfant)
sleep (1);
}
break;
} // switch
// PARENT ET ENFANT
// ----------------
exit (0);
} // main
|
|
|
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
bernie38
Waldorf (le pote à Statler)
Messages : 11 421 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 24 novembre 2004 - 13 h 30 m 07 s |
|
|
et remarque le "laisserFinirLEnfant" et le commentaire qui va avec (ça te rappelle rien ?  )
|
|
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 290 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 24 novembre 2004 - 13 h 30 m 27 s |
|
|
Ouais... bon ben comme pas le droit aux fonctions de fichier (fprintf, feof, ...) c'est vite vu!
|
|
| |
Totalement inutile, donc completement indispensable 
|
bernie38
Waldorf (le pote à Statler)
Messages : 11 421 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 24 novembre 2004 - 13 h 31 m 48 s |
|
|
bien sur, il est pas complet (manque, entre autre, le fichier Utilitaires.h), c'est juste pour l'exemple
|
|
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 290 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 24 novembre 2004 - 13 h 32 m 12 s |
|
|
Le 24 novembre 2004 - 13 h 30, bernie38 a écrit :
et remarque le "laisserFinirLEnfant" et le commentaire qui va avec (ça te rappelle rien ? )
|
Heu... rafraichit moi la memoire?
|
|
| |
Totalement inutile, donc completement indispensable 
|