Utilisation Mémoire Vive
Fermé
jack
-
3 févr. 2009 à 12:42
dubcek Messages postés 18589 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 21 mars 2023 - 4 févr. 2009 à 12:31
dubcek Messages postés 18589 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 21 mars 2023 - 4 févr. 2009 à 12:31
A voir également:
- Utilisation Mémoire Vive
- Notice d'utilisation - Guide
- Mémoire vive insuffisante photoshop ✓ - Forum Photoshop
- Mémoire virtuelle windows 10 - Guide
- Utilisation chromecast - Guide
- Nettoyer mémoire ipad - Guide
2 réponses
dubcek
Messages postés
18589
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 mars 2023
5 584
3 févr. 2009 à 14:03
3 févr. 2009 à 14:03
hello
utiliser les pipes ou la mémoire :
NAME
pipe - create pipe
DESCRIPTION
pipe creates a pair of file descriptors, pointing to a pipe inode, and places them in the array pointed to by filedes. filedes[0] is for reading, filedes[1] is for writing.
NAME
shm_open, shm_unlink - Create/open or unlink POSIX shared memory objects
DESCRIPTION
shm_open creates and opens a new, or opens an existing, POSIX shared memory object. A POSIX shared memory object is in effect a handle which can be used by unrelated processes to mmap(2) the same region of shared memory. The shm_unlink function performs the converse operation, removing an object previously created by shm_open.
utiliser les pipes ou la mémoire :
NAME
pipe - create pipe
DESCRIPTION
pipe creates a pair of file descriptors, pointing to a pipe inode, and places them in the array pointed to by filedes. filedes[0] is for reading, filedes[1] is for writing.
NAME
shm_open, shm_unlink - Create/open or unlink POSIX shared memory objects
DESCRIPTION
shm_open creates and opens a new, or opens an existing, POSIX shared memory object. A POSIX shared memory object is in effect a handle which can be used by unrelated processes to mmap(2) the same region of shared memory. The shm_unlink function performs the converse operation, removing an object previously created by shm_open.
dubcek
Messages postés
18589
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 mars 2023
5 584
4 févr. 2009 à 12:31
4 févr. 2009 à 12:31
malloc alloue de la mémoire utilisable uniquement par cette tâche. pour que d'autres tâches aient accès à cette mémoire, il faut la partager
shmat(2) - shared memory operations
shmctl(2) - shared memory control operations
shmdt(2) - shared memory operations
shmget(2) - get shared memory segment identifier
shmids(2) - discover all shared memory identifiers
shmop(2) - shared memory operations
sigaction(2) - detailed signal managem
shmat(2) - shared memory operations
shmctl(2) - shared memory control operations
shmdt(2) - shared memory operations
shmget(2) - get shared memory segment identifier
shmids(2) - discover all shared memory identifiers
shmop(2) - shared memory operations
sigaction(2) - detailed signal managem
3 févr. 2009 à 19:19
le but de mon programme étant de créer un forum sur le terminal linux sur lequel on peut rentrer par réseau entre PC, je créé un processus pour chaque utilisateur, les utilisateurs pourront s'enregistrer, écrire des messages ...etc
Le projet est en fait limité à l'utilisation de la mémoire vide (utilisation de malloc non ?) et comme je ne suis vraiment pas calé en C mais plus en JAVA, je voulais savoir comment je pouvais allouer une chaine de caractère en mémoire vive à partir d'un processus sur une mémoire partagée afin que l'autre processus puisse récupérer les info :
Code du type :
int main()
{
pid_t serveur;
[...] /* Code enregistrement des utilisateurs ..etc */
int i = 0;
for (i=0;i<nb;i++) /* est le nombre de personnes enregistrées sur le serveur */
{
char* p;
p =(char*)malloc(200*sizeof(char)); /* On limite la taille du message à 200 caractères */
serveur = fork();
switch(serveur)
{
case 0: /*Utilisateur simple*/
printf("%s : Ecrivez votre message : ", user[i]); /* user est l'utilisateur dont il est question */
scanf("%s",message);
break;
default: /* Administrateur : Reception des messages*/
/* Ici je voudrais afficher le message qui a été écrit juste au dessus mais je ne sais pas comment allouer dans le processus fils (case 0) dans le malloc car c'est une chaine de caractères :/ */
waitpid(getppid(),&message,0);
printf("%s",message);
break;
}
}
return 0;
}
3 févr. 2009 à 19:20