Se connecter avec
S'enregistrer | Connectez-vous

CGI C : lire un fichier son du serveur

Dernière réponse : dans Programmation

Bonjour tout le monde ! :-)

J'aimerai pouvoir à partir d'un client HTTP lire un fichier son quelconque du serveur (.wav par ex).

Je connais l'emplacement du fichier son dans le serveur et ce fichier ne se trouve pas dans le répertoire d'Apache (httpd) mais plutôt dans les /var/etc.
L'équivalent en PERL est la fonction "sysread" et "syswrite".

Quelqu'un connaît t'il l'équivalent en CGI C ?

Merci d'avance,
Made.

Autres pages sur : cgi lire fichier serveur

Lassé par la pub ? Créez un compte

void a écritfopen() avec read ou fread() mais c'est de plus bas niveau que perl


Oui... justement, que fais exactement les fonctions systread et syswrite PERL par rapport à un fread en C ?

En fait, j'ai récupérer un programme PERL qui permet de lire un fichier audio sur le serveur par un client http. J'aimerai trouver l'équivalent en C ou encore, passer le code PERL en C.

Voici le code PERL :

  1. sub read_audio()
  2. {
  3. my $msgid = param('msgid');
  4. my &format = param('format');
  5. my $path = "/var/spool/test.wav";
  6.  
  7. $msgid =~ /^\d\d\d\d$/ || die("Wrong msg ($msgid)!");
  8. [g]grep(/^${format}$/, keys %formats) || die("Wrong Format ($format)!");[/g]
  9.  
  10. # Mailbox and folder are already verified
  11. if (open(AUDIO, "<$path"))
  12. {
  13. $size = -s $path;
  14. $|=1;
  15.  
  16. [g]print header(-type=>$formats{$format}->{'mime'}, -Content_length => $size);
  17.  
  18. while(($amt = sysread(AUDIO, $data, 4096)) > 0)
  19. {
  20. syswrite(STDOUT, $data, $amt);
  21. }[/g]
  22. close(AUDIO);
  23. }
  24. else
  25. {
  26. die("Cannot open $path\n");
  27. }
  28. }



Quelqu'un pourrait-il m'aider à comrendre le code en gras ? Je ne connais pas le PERL mais plutôt le C...

Merci d'avance.
Made

Oups, on pe pas combiner les tags...

void a écritfopen() avec read ou fread() mais c'est de plus bas niveau que perl


Oui... justement, que fais exactement les fonctions systread et syswrite PERL par rapport à un fread en C ?

En fait, j'ai récupérer un programme PERL qui permet de lire un fichier audio sur le serveur par un client http. J'aimerai trouver l'équivalent en C ou encore, passer le code PERL en C.

Voici le code PERL :

sub read_audio()
{
my $msgid = param('msgid');
my &format = param('format');
my $path = "/var/spool/test.wav";

$msgid =~ /^\d\d\d\d$/ || die("Wrong msg ($msgid)!");
grep(/^${format}$/, keys %formats) || die("Wrong Format ($format)!");

# Mailbox and folder are already verified
if (open(AUDIO, "<$path"))
{
$size = -s $path;
$|=1;

print header(-type=>$formats{$format}->{'mime'}, -Content_length => $size);

while(($amt = sysread(AUDIO, $data, 4096)) > 0)
{
syswrite(STDOUT, $data, $amt);
}

close(AUDIO);
}
else
{
die("Cannot open $path\n");
}
}


Quelqu'un pourrait-il m'aider à comrendre le code en gras ? Je ne connais pas le PERL mais plutôt le C...

Merci d'avance.
Made
Lassé par la pub ? Créez un compte