#1 Le 29/03/2008, à 11:21
- SamueLinux
[C/GTK+] Utilisation de script shell
Bonjour à toute la communauté, :D
dans mon programme coder en C et en GTK+, j'utilise un script shell pour executer certaines commandes pour un gain de temps, mais comment faire en sorte de bloquer le processus ! Je m'explique !
Par exemple, mon programme télécharge un page grâce à l'outil wget, j'ai coder un petit script shell qui fait sa et qui enregistre le lien vers le fichier a afficher dans un fichier que je recupere apres dans mon programme C, mais le problème c'est que le script shell peut mettre quelques secondes a recevoir la page alors que mon programme continu, tente d'ouvrir le fichier mais il n'y a rien dedans, donc il charge une page vide et boum seg fault !!!
Ma question est donc, comment faire pour attendre la fin de l'execution du script shell, etant donné qu'il y a aussi la boucle infinie de GTK+ qui me pose problème !:/
Merci à tous !
Hors ligne
#2 Le 29/03/2008, à 11:33
- maskott
Re : [C/GTK+] Utilisation de script shell
si tu mets ta commande system() dans un processus fils?
if fork()==0
{
system(...);
}
excuse moi pour la syntaxe ça fait longtemps
Backups are for wimps. Real men upload their work to an ftp server and have everybody mirror it. - Linus Torvalds
[RESOLU] dans les posts qui le sont, merci
(Et si vous y arrivez tout seul, indiquez aussi la solution, remerci)
Hors ligne
#3 Le 29/03/2008, à 11:35
- SamueLinux
Re : [C/GTK+] Utilisation de script shell
Oui, ok merci, je vais regarder de ce côter je te tiens au courant !
Hors ligne
#4 Le 29/03/2008, à 12:41
- philou8237
Re : [C/GTK+] Utilisation de script shell
En faisant un peu plus propre :
int pid = -1;
int child_res = 0;
pid = fork();
if (pid == 0) // process fils
{
execp(...); // execute la commande du fils
perror("execp"); // cette ligne ne devrait jamais s'éxecuter
exit(1);
}
else // process pere
{
wait(&child_res); // attente de la fin du fils
... suite de ton prog
}
Pour plus d'info :
man execp
man wait
Dernière modification par philou8237 (Le 29/03/2008, à 12:42)
Hors ligne