Программа увеличивает счетчик в отображаемом в память файле. (QNX 6.3.0) #include <unistd.h> #include <semaphore.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <signal.h> #include <string.h> #include <sys/mman.h> #define MAXLINE 4096 #define FILE_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH) #define SEM_NAME "mysem" struct shared { sem_t mutex; /* the mutex: a Posix memory-based semaphore */ int count; /* and the counter */ } shared; int main(int argc, char **argv) { int fd, i, nloop; struct shared *ptr; if (argc != 3) printf("usage: incr3 <pathname> <#loops>"); nloop = atoi(argv[2]); /* 4open file, initialize to 0, map into memory */ fd = open(argv[1], O_RDWR | O_CREAT, FILE_MODE); write(fd, &shared, sizeof(struct shared)); ptr = mmap(NULL, sizeof(struct shared), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); close(fd); /* 4initialize semaphore that is shared between processes */ sem_init(&ptr->mutex, 1, 1); setbuf(stdout, NULL); /* stdout is unbuffered */ if (fork() == 0) { /* child */ for (i = 0; i < nloop; i++) { sem_wait(&ptr->mutex); printf("child: %d\n", ptr->count++); sem_post(&ptr->mutex); } exit(0); } /* 4parent */ for (i = 0; i < nloop; i++) { sem_wait(&ptr->mutex); printf("parent: %d\n", ptr->count++); sem_post(&ptr->mutex); } exit(0); } Компилируется без ошибок. При запуске выдает: "Memory fault (core dumped)". Как исправить? Не нравятся ему скорей всего строки: sem_wait(&ptr->mutex); printf("child: %d\n", ptr->count++); За раннее благодарен
Ответ на:
комментарий
от alxndr
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от alxndr
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Переход от LinuxThreads к NTPL (2004)
- Форум Размер структуры с вложенным массивом структур (2013)
- Форум Возвращаясь: Семафоры в Red Hat 9.0 (2004)
- Форум Не понимаю почему не работает (2013)
- Форум Проблема с connect (2006)
- Форум Утилита для изменения аптайма (2008)
- Форум Помогите разобраться с потоками (2003)
- Форум Многопользовательский чат (2013)
- Форум что не так в использовании структуры (2008)
- Форум не работает inotify watch (2017)