Salut !

Je ne sais pas si ce poste a ca place ici ou dans le forum programmation Linux, donc j'espaire ne pas m'étre trompé... :^/

Je me pose la question de savoir quel est la meilleur solution pour faire communiquer deux applications entre elle de manière la plus rapide possible en C sous Linux ? et si la rapidité est beaucoup réduite par rapport a un programme communiquant avec lui même ?

Bon... comme un exemple vaut mieux qu'un long discourt en voici un :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
// programmeQuiRecoi
void main()
{
    int num;
    int total = 0;
    while(1)
    {
        scanf("%d\n", &num);
        total += num;
        printf("total = %d\n",num);
    }
}
La méthode ici pour communiquer est faite avec un scanf. En utilisant donc un pipe comme ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
./programmeQuiEmet | ./programmeQuiRecoi
Mais il y a plusieurs problème avec cette technique (du moins comme je l'utilise actuellement avec un pipe) :
1> La communication ne se fait que dans un seul sens.
2> La communication ne se fait pas petit a petit mais seulement lorsque le programme qui émet est terminé.
3> Le programme peu communiquer avec UN seul autre programme.
4> Pour terminer je ne suis pas sur que les performances avec cette technique soit exceptionnel non ?


Donc en fait il faudrais un mode de communication qui se face dans les deux sens un genre de truc comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
void main()
{
    int num;
    int total = 0;
    while(1)
    {
        receptionDUnInt(&num);
        total += num;
        emitionDUnInt(num);
    }
}

Avais vous une idée de quel technique (portable si possible) utiliser pour faire cela ?

Merci pour votre aide.