Здравствуйте. Передо мной стоит задние прочитать два именованых потока и записать в третий (мною созданный) сумму чисел, которые будут поступать.
Для этого написал следующее.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/shm.h>
#define SHMSZ 1000
int main(int argc, char *argv[]) {
int num1, num2;
num1 = atoi(argv[1]);
num2 = atoi(argv[2]);
int shmid,shmid1,shmid2;
key_t key;
int *shm1, *shm2, *shm3, *temp;
key = 54321;
printf("%d\n", key);
if ((shmid = shmget(key, SHMSZ, IPC_CREAT | 0660)) < 0) {
return 1;
}
if ((shm1 = (int *)shmat(shmid, NULL, 0)) == (int *) -1) {
return 1;
}
if ((shm2 = (int *)shmat(num1, NULL, 0)) == (int *) -1) {
return 1;
}
if ((shm3 = (int *)shmat(num2, NULL, 0)) == (int *) -1) {
return 1;
}
int count = 0;
while (count < 100) {
temp[count] = shm2[count] + shm3[count];
count++;
}
memcpy(shm1, temp, (sizeof(temp)*10) );
if(shmdt(shm1) < 0){
return 1;
}
printf("%d\n",key);
return 0;
}
Однако программа не выдает нужный результат (оказывается складываить числа за раз). Где я могу ошибаться?