Προς το περιεχόμενο

shared memory in 2 programs


Προτεινόμενες αναρτήσεις

Δημοσ.

Εχω 2 προγράμματα το arrays.c και το multiply.c

Στο arrays έχω 2 πίνακες Α[2][3],Β[3][4] που τους εμφανίζει και ανοίγω ενα τμήμα κοινής μνήμης και επισυνάπτω τους 2 πίνακες και έναν 3ο C=A*B.Θέλω να καλώ το multiply.c μέσω της execvp(""); και να κάνω εκει την πράξη.Πως θα πάρει το multiply.c τις τιμές των πινάκων απο την κοινή μνήμη ;;

>/*arrays.c*/
#include<stdio.h>
#include<sys/ipc.h>
#include<sys/shm.h>
#include<sys/stat.h>
main()
{
int seg_id=shmget(IPC_PRIVATE,1024,S_IRUSR|S_IWUSR);
int A[2][3],B[3][4],C[2][4];
int i,j,x,k,d;
//dhmiourgei 2 pinakes a kai b
//kai tous emfanizei
x=1;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
	A[i][j]=x;
	x++;
}
}
x=12;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
	B[i][j]=x;
	x--;
}
}
A[2][3]=shmat(seg_id,NULL,0);
B[3][4]=shmat(seg_id,NULL,0);
C[2][4]=shmat(seg_id,NULL,0);
printf("A:\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
	printf("%d\t",A[i][j]);
}
printf("\n");
}
printf("B:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d\t",B[i][j]);
}
printf("\n");
}
execvp("multiply.out");//???
//emfanizei C
/*for(i=0;i<2;i++)
{
for(j=0;j<4;j++)
{
	printf("%d\t",C[i][j]);
}
printf("\n");
}*/
}

>
/*multiply.c*/
#include<stdio.h>
main(){
int i,j,k,d;
for(i=0;i<2;i++){
for(j=0;j<4;j++){
for(k=0;k<3;k++){
d=d+A[i][k]*B[k][j];}
C[i][j]=d;
d=0;}}}

Πρέπει να δώσω σαν όρισμα το seg_id στην multiply.c ;;και μετά πως διαβάζει από την κοινή μνήμη;;

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...