Кто-нибудь знает, почему я получаю сообщение «segmentation fault (core dumped)»? Что не так? Мне кажется, что проблема связана с массивом. Я знаю, что «ошибка сегментации» означает, что я пытался получить доступ к памяти, к которой у меня нет доступа.ошибка сегментации (ядро сбрасывается) - что не так в моем коде
#include <stdio.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, const char* argv[])
{
int shmid;
int i, j;
int glos;
pid_t pid;
key_t key;
long *wyniki;
key = ftok("/home/sebastian", 2);
shmid = shmget(key, 20 * sizeof(long), IPC_CREAT);
if (shmid == -1) {
printf("Error - New memory segment");
}
else {
printf("My memory segment: %d\n", shmid);
wyniki = (long*) shmat(shmid, 0, 0);
for (i = 0; i < 5; i++) {
wyniki[i] = 0;
}
// Creating new processes
for (i = 0; i < 20; i++) {
pid = fork();
if (pid == 0) {
srand48(time(NULL) + getpid());
for (j = 0; j < 1000000; j++) {
glos = rand() % 5;
wyniki[glos] += 1;
}
}
else {
printf("ERROR - PROCESSES");
}
}
}
return 0;
}
Вы использовали GDB? Каковы были значения переменных перед сегрегацией? Успешно ли «ftok»? Вы должны [проверить его возвращаемое значение] (http://pubs.opengroup.org/onlinepubs/009695399/functions/ftok.html#tag_03_198_04) на всякий случай. –
скомпилируйте программу с помощью -g, запустите ее с помощью gdb, это покажет вам, что она не работает – pm100
'ftok' no returns -1. –