begin process at 2012 05 30 07:46:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Tube bidirectionnels. c++


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tube bidirectionnels. c++

mercredi 9 décembre 2009 à 13:06:55 | Tube bidirectionnels. c++

tchiibo

bonjour,
je voudrais en c++ créer un tube bidirectionnel
qui permetrais comme en bash ma t-on dit de réaliser cette comande :
cat nom_du_fichier.wav /lame --/gzip >up.mp3.gz
à l'aide de execlp et de fork pour la création de père et de fils.
le script changerai un fichier wav en mp3 à l'aide de lame et ensuite le zipperai à l'aide de gzip.
merci
mercredi 9 décembre 2009 à 14:26:36 | Re : Tube bidirectionnels. c++

CptPingu

Administrateur CodeS-SourceS

cat nom_du_fichier.wav /lame --/gzip >up.mp3.gz


Tu es sur de ta commande ?
Ca ne serait pas:

cat nom_du_fichier.wav | lame -- | gzip > up.mp3.gz



IL faut effectivement que tu forkes et que tu rediriges.
Il y a eu des échanges similaires sur le forum, je t'invite à regarde ce lien (surtout vers la fin):
http://www.cppfrance.com/forum/sujet-GARDER-NOM-FICHIER-ENLEVANT-EXTENSION-ARCHIVE_1380431.aspx

Je pense que ça devrait te débloquer.
mercredi 9 décembre 2009 à 15:06:47 | Re : Tube bidirectionnels. c++

tchiibo

merci. je poste le code, il marche.
il suffit de compiler enregistrer,
puis sur la commande g++ main.cpp nom_du_fichier
ensuite mettez un fichier wav là ou est l'exécutable. Et voila il converti le wav en mp3 et le zip.

#include <iostream>
#include <unistd.h>
#include <string.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <fcntl.h>
using namespace std;




int main(int argc, char* argv[])
{
int catlame[2];//descripteur du tube
int lamegzip[2];

int fd_fichier;
string wav,nomfinal,mp3gz=".mp3.gz";
wav=argv[1];
wav.resize(wav.length()-4);
nomfinal=(wav+mp3gz);
fd_fichier=open (nomfinal.c_str(),O_WRONLY| O_TRUNC| O_CREAT,0666);





//création des tubes
if (pipe(catlame)==-1)
{

perror ("erreur a la creation du tube pd");
exit(1);
}
if (pipe(lamegzip)==-1)
{

perror ("erreur a la creation du tube pd2");
exit(1);
}

if (fork()==0)
{//le fils est chargé de l'affichage du fichier
dup2 (catlame[1],1);// redirection de la sortie standard vers l'entré du tube
close (catlame[0]);//on ferme le descripteur servant a la lecture ds le tube car fils ne lit pas ds tube
close (catlame[1]);//ferme le descripteur servant a l'écriture ds le tube devenu inutile ûisque redirigé
close (lamegzip[0]);
close (lamegzip[1]);
execlp("cat","cat",argv[1],NULL);
perror("erreur sur cat");
exit(0);
}

if (fork()==0)
{//fils charger de la convertion du wav en mp3
dup2 (catlame[0],0);// redirection de la sortie standard vers l'entré du deuxième tube
close (catlame[0]);
close (catlame[1]);

dup2 (lamegzip[1],1);
close (lamegzip[0]);
close (lamegzip[1]);

execlp("lame","lame","-","-",NULL);
perror("erreur sur lame");
exit(0);


}

//père s'occupe de la compression du mp3

dup2 (lamegzip[0],0);//on dirige la sortie du tube sur l'entée standard
close (lamegzip[0]);//on ferme le descripteur servant a l'écriture car père n'ecrit pas
close (lamegzip[1]);//on ferme descripteur lecture car devenu inutile car rediriger
close (catlame[0]);
close (catlame[1]);
dup2 (fd_fichier,1);

execlp("gzip","gzip",NULL);
perror("erreur sur gzip");

return 0;
}


Cette discussion est classée dans : fichier, aide, wav, tube, bidirectionnels


Répondre à ce message

Sujets en rapport avec ce message

Enregistrer en HEXA un texte avec gcc !! [ par UncleShu ] /* * Ce programme affiche le fichier en HEXADECIMAL et se copie lui-même avec * une autre exetenstion (.txt). Moi je voudrais qui affiche le fichier * AIDE programme supprimer un fichier ! SVP [ par nico ] salut à tous,je suis un gros nul en c++ , je viens de telecharger dev-c++ et j'aimerais faire mon premier programe tout simple pour supprimer un fichi aide sur les fichiers [ par dickymoe ] VinceExiste-t-il une fonction permettant de savoir si un fichier existe ?et une autre permettant de savoir si un fichier est vide ?merci ouvrir un fichier .wav sous Vc++ .....:-( [ par kinder ] hi !J'voudrais lancer un son (.wav de préferance) en exécutant un programme compillé par Vc++... Si y a un sauveur sur le web... Je suis ouvert à tout Aide .chm [?] [ par crocejf2000 ] Salut,Il y avait dans mon prog un fichier d'aide .hlp mais quand je change le nom et met mon nouveau fichier d'aide .chm ca ne fonctionne pas.Comment coment on integre un fichier wav dans une source [ par yoshimua ] je voudrais savoir comment on peut lire un fichier wav a partir d'un programme en C++ besoin d aide [ par backcpp ] voila j aimerais realiser un logiciel tout simple mais je voulais d abord savoir si je ne vise pas trop haut, donc je vous explique et si vous pouviez Besoin D'aide [ par kazaam ] J'ai comme projet la symetrie horizontale d'un fichier bmp en borland C, je lis le fichier l'entete se fait mais j'arrive pas a ce qu'il fasse la syme Aide fichier :) [ par asnow ] Salut a tous :)Voila mon tit code pour ouvrir un fichiervoid Ouverture () {char nomf[20]; printf("Entrez le nom du fichier :"); scanf("%s", nomf A L'AIDE !!! [ par arfalchon ] Je voudrais récupérer du texte dans une EditBox (API Win32), puis ensuite l'écrire dans un fichier. Mais je n'arrive pas à obtenir quoi que ce soit, l


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,122 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales