Программа увеличивает счетчик в отображаемом в память файле. (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)