48 lines
1.3 KiB
C
48 lines
1.3 KiB
C
|
/**
|
|||
|
Auteur : RC (inspiration MS)
|
|||
|
Squelette du programme popen_somme
|
|||
|
Cf. algorithme dans la fonction main
|
|||
|
|
|||
|
NB : La fonction popen() engendre un processus en cr<EFBFBD>ant un tube
|
|||
|
(pipe), executant un fork(), et en invoquant le shell avec la
|
|||
|
commande donn<EFBFBD>e dans l'argument no 1.
|
|||
|
Comme un tube est unidirectionnel par definition,
|
|||
|
l'argument no 2 doit indiquer seulement une lecture
|
|||
|
ou une <EFBFBD>criture, et non pas les deux.
|
|||
|
Le flux correspondant sera donc ouvert en lecture seule
|
|||
|
ou <EFBFBD>criture seule.
|
|||
|
Cf. man ...
|
|||
|
*/
|
|||
|
#include <stdio.h>
|
|||
|
#include <stdlib.h>
|
|||
|
#include <assert.h>
|
|||
|
#include <errno.h>
|
|||
|
#define MAX_COMMANDE 100
|
|||
|
|
|||
|
int main (int argc, char *argv[])
|
|||
|
{
|
|||
|
assert (argc == 3);
|
|||
|
/// Syntaxe : ./a.out <x> <n>
|
|||
|
/// Exemple : ./a.out 2 10
|
|||
|
/// Resultat : 2047
|
|||
|
int x;
|
|||
|
int n;
|
|||
|
FILE *fPin;
|
|||
|
char commande[MAX_COMMANDE];
|
|||
|
int somme;
|
|||
|
int l;
|
|||
|
char unResultat[10];
|
|||
|
|
|||
|
/// "n" boucles "for" avec le compteur l
|
|||
|
{
|
|||
|
/// Preparation de la commande pour popen(avec sprintf)
|
|||
|
/// Creation du fils et du pipeline et test d'erreur...
|
|||
|
/// Avec fscanf, lecture de la valeur x^l produite par ...
|
|||
|
/// Fermeture avec pclose
|
|||
|
/// Incrementation de la somme
|
|||
|
}
|
|||
|
/// affichage du resultat
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|