2013-12-21 2 views
3

У меня есть программа с двумя процессами и двумя файлами, и я хочу прочитать var с кодом второго файла по совместной памяти, но я получаю только «тестовое» слово, а не текст. код первого файла программы:Я не могу прочитать общую память в C

a=shmget(key, 200, 0666|IPC_CREAT); 
text=(char *)shmat(a,0,0); 
text=&words[0]; 
    if ((P2=fork())==1) 
    { 
    perror("fork"); 
    exit(-1); 
    } 
      if (P2==0) 
      { 
      execl("prog2","prog2",NULL); 
      } 

А код второго файла:

a=shmget(key, 200, 0666); 
text=shmat(a,0,SHM_RDONLY); 
printf("testing, %s", text); 

Любая идея? Спасибо.

+1

также 'вилки() == -1' не 1. – Duck

ответ

6

Вы никогда ничего не кладете в общую память; вы просто изменили значение text, чтобы указать на что-то другое, кроме общей памяти.

Вместо:

text=&words[0]; 

Вы, вероятно, хотели что-то вроде:

memcpy(text, &words[0], strlen(words[0]) + 1); 
+0

Совершенных :), спасибо очень много. – user3066261

Смежные вопросы