ftruncate()无效的争论错误

时间:2016-09-30 14:09:41

标签: c shared-memory

我刚刚开始学习共享内存,我们假设为我的任务创建一个共享内存对象,但是在运行程序时我一直收到错误。    错误来自ftruncate()函数,并且它一直告诉我它是一个无效的参数,这是我的共享内存的代码段:

struct container* rPtr;
int fd;

/*  Creates shared memory object and sets it size  */
fd = shm_open("/collatzRegion", O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);

if (fd == -1)
{   perror("shm_open");
    return 1;
}

if ((ftruncate(fd, sizeof(struct container))) == -1)
{   perror("ftruncate");
    return 1;
}

/*  Maps shared memory object  */
rPtr = mmap(NULL, sizeof(struct container), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);

if ( rPtr == MAP_FAILED)
{   perror("mmap");
    return 1;
}

我在main()之前定义的结构是:

/* Defines "structure" of shared memory */
#define MAX_LEN 10000
struct container
{   int length;
    int buf[MAX_LEN];
};

0 个答案:

没有答案