Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2013, 08:28   #1
Cannibal
Форумчанин
 
Регистрация: 17.02.2008
Сообщений: 191
По умолчанию Разделяемая память в unix на C

Нужно написать чат с использованием разделяемой памяти. программа запускается в двух окнах, между ними должен вестись обмен сообщениями до нажатия esc. Проблема собственно в доступу к разделяемой памяти и как сделать работу до нажатия esc.

Код:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <string.h>

#define SEGSIZE 512

char *segptr;
void usr1H(int signum)
{
    printf("%s",segptr);
}

int main(int argc, char *argv[])
{
    key_t key;
    int shmid;
    key = ftok(".",'S');
    printf("%d\n",getpid());    

    int pid2;
    scanf("%d",&pid2);

    if ((shmid = shmget(key, SEGSIZE, IPC_CREAT | IPC_EXCL | 0666)) == -1) {
	printf("Shared memory segment exists - opening as client\n");

	/* Segment probably already exists - try as a client */
	if ((shmid = shmget(key, SEGSIZE, 0)) == -1) {
		perror("shmget");
		exit(1);
	}
     } else {
	 printf("Creating new shared memory segment\n");
     }

/* Attach (map) the shared memory segment into the current process */
    if ((segptr = shmat(shmid, 0, 0)) == (char *) -1) {
	perror("shmat");
	exit(1);
     }


    char *text;
    scanf("%s",text);
    printf("%s",text);
    segptr = &text;

    kill(pid2,usr1H);
    return 0;
}
ругается на присваивание считываемого текста разделяемой памяти.
Mathematicians often mix up Christmas and Halloween, because Dec.25=Oct.31.

Последний раз редактировалось Cannibal; 07.06.2013 в 08:43.
Cannibal вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Си память Praud Помощь студентам 17 08.03.2013 21:12
Разделяемая память Spb Общие вопросы C/C++ 0 25.12.2011 14:49
память offname C# (си шарп) 1 01.10.2011 10:33
Разделяемая область данных (Delphi) VadEr Помощь студентам 0 08.09.2010 11:35
Память Ghennadiy Общие вопросы Delphi 9 25.08.2009 09:23