giampoul Δημοσ. 30 Νοεμβρίου 2011 Δημοσ. 30 Νοεμβρίου 2011 Εχω 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 ;;και μετά πως διαβάζει από την κοινή μνήμη;;
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα