A voir également:
- Processus père et tubes
- Numéro père noël whatsapp - Accueil - Messagerie instantanée
- Simulateur voix du père noël - Forum Logiciels
- Processus hôte windows (rundll32) ✓ - Forum Windows
- Processus inactif du systeme ✓ - Forum Windows
- Processus d'execution client serveur - Forum Windows 10
6 réponses
Oui, de la même façon qu'il peut écrire dans plusieurs fichiers à la fois. En langage C, pour un fichier c'est la fonction fopen, pour un processus, c'est popen :
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/popen.3.html
popen est une manière élégante d'ouvrir un processus fils depuis un processus père, mais après tout dépend de tes besoins. En outre, popen fait référence dans son man à d'autres fonctions permettant de manipuler des processus (voir en bas de page).
Bonne chance
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/popen.3.html
popen est une manière élégante d'ouvrir un processus fils depuis un processus père, mais après tout dépend de tes besoins. En outre, popen fait référence dans son man à d'autres fonctions permettant de manipuler des processus (voir en bas de page).
Bonne chance
hwida12
Messages postés
18
Statut
Membre
Merci bcpp pr la réponse.
hello
en shell, on passe par des fichiers FIFO pour qu'une tâche "alimente" plusiers pipes, ici 3:
mkfifo fifo1 fifo2
commande1 < fifo1 > log1 2>&1 &
commande2 < fifo2 > log2 2>&1 &
commande ¦ tee fifo1 fifo2 ¦ commande3 > log3 2>&1
en shell, on passe par des fichiers FIFO pour qu'une tâche "alimente" plusiers pipes, ici 3:
mkfifo fifo1 fifo2
commande1 < fifo1 > log1 2>&1 &
commande2 < fifo2 > log2 2>&1 &
commande ¦ tee fifo1 fifo2 ¦ commande3 > log3 2>&1
Bonjour,
J'ai créé une mémoire partagée entre processus père et son fils le père écrit des données et le fils lit ses données.Le programme m'affiche l'erreur suivante:
memoire.c: In function ‘main’:
memoire.c:107: error: expected declaration or statement at end of input
Voila le programme que j'ai fait:
////////////////////////////////////
#include<sys/types.h>
#include<sys/ipc.h>
#include<stdio.h>
#include<stdlib.h>
#include <signal.h>
#include <errno.h>
#define SHM_SIZE 1024
int main(int argc, char *argv[])
{
key_t clef ; // la clef associee au segment
pid_t pid ;
char *mem ;
int shmid ; // l'identificateur du segment de memoire partagee
int t[5]={214,4553,65,90,123};
typedef struct
{
int t1[5];
}structure_partagee;
// J'instancie une structure "structure_partagee" et je l'appelle Data.
structure_partagee *Data;
char *name = (char *) malloc(15*sizeof(char)) ;
int i;
/* construire
une cle identifiant le segment */
clef = ftok(name,(key_t) clef) ;
/*indiquer
les droits d'acces de ce segment de memoire */
shmid = shmget((key_t)clef, SHM_SIZE,0644|IPC_CREAT ) ;
if ( shmid== -1 )
{
perror("shmget") ;
exit(1) ;
}
pid =fork() ;
if(pid > 0)
{//père
mem = (char*) shmat(shmid,(void*)0, 0);
if (mem ==(char*)-1)
{
perror("shmat") ;
exit(1) ;
}
for(i=0; i<4; i++)
{
Data->t1[i]=t[i];
}
if(shmdt(mem)==-1)
{
perror("shmdt");
exit(1);
}
}
else if(pid==0)//fils
{
printf("Je suis le fils\n") ;
mem = (char*)shmat(shmid,(void*)0,0) ;
if (mem ==(char*)-1){
perror("attachement impossible") ;
exit(1) ;
}
printf("Affichage fils1\n");
for(i=0; i<4; i++)
{
printf("%d",Data->t1[i]);
}
printf("ecrit dans le segment: %s \n",mem);
if(shmdt(mem)==-1)
{
perror("shmdt");
exit(1);
}
return(0);
}
J'ai créé une mémoire partagée entre processus père et son fils le père écrit des données et le fils lit ses données.Le programme m'affiche l'erreur suivante:
memoire.c: In function ‘main’:
memoire.c:107: error: expected declaration or statement at end of input
Voila le programme que j'ai fait:
////////////////////////////////////
#include<sys/types.h>
#include<sys/ipc.h>
#include<stdio.h>
#include<stdlib.h>
#include <signal.h>
#include <errno.h>
#define SHM_SIZE 1024
int main(int argc, char *argv[])
{
key_t clef ; // la clef associee au segment
pid_t pid ;
char *mem ;
int shmid ; // l'identificateur du segment de memoire partagee
int t[5]={214,4553,65,90,123};
typedef struct
{
int t1[5];
}structure_partagee;
// J'instancie une structure "structure_partagee" et je l'appelle Data.
structure_partagee *Data;
char *name = (char *) malloc(15*sizeof(char)) ;
int i;
/* construire
une cle identifiant le segment */
clef = ftok(name,(key_t) clef) ;
/*indiquer
les droits d'acces de ce segment de memoire */
shmid = shmget((key_t)clef, SHM_SIZE,0644|IPC_CREAT ) ;
if ( shmid== -1 )
{
perror("shmget") ;
exit(1) ;
}
pid =fork() ;
if(pid > 0)
{//père
mem = (char*) shmat(shmid,(void*)0, 0);
if (mem ==(char*)-1)
{
perror("shmat") ;
exit(1) ;
}
for(i=0; i<4; i++)
{
Data->t1[i]=t[i];
}
if(shmdt(mem)==-1)
{
perror("shmdt");
exit(1);
}
}
else if(pid==0)//fils
{
printf("Je suis le fils\n") ;
mem = (char*)shmat(shmid,(void*)0,0) ;
if (mem ==(char*)-1){
perror("attachement impossible") ;
exit(1) ;
}
printf("Affichage fils1\n");
for(i=0; i<4; i++)
{
printf("%d",Data->t1[i]);
}
printf("ecrit dans le segment: %s \n",mem);
if(shmdt(mem)==-1)
{
perror("shmdt");
exit(1);
}
return(0);
}
Ben oui il manque une accolade. C'est pour ça que c'est bien d'indenter... Par ailleurs return n'est pas une fonction et on écrit plutôt "return 0;" que "return(0);".
Bonne chance
Bonne chance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question