mmap函数问题 20

#include<unistd.h>#include<stdio.h>#include<sys/mman.h>#include<fcntl.h>#include<stdl... #include <unistd.h>
#include <stdio.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <stdlib.h>
#include <sys/types.h>

typedef struct
{
int integer;
char string[24];
}RECORD;

#define NRECORDS (100)

int main()
{
RECORD record,*mapped;
int i,f;
FILE *fp;
fp=fopen("records.dat","w+");
for(i=0;i<NRECORDS;i++)
{
record.integer=i;
sprintf(record.string,"RECORD-%d",i);
fwrite(&record,sizeof(record),1,fp);
}
fclose(fp);

fp=fopen("records.dat","r+");
fseek(fp,43*sizeof(record),SEEK_SET);
fread(&record,sizeof(record),1,fp);

record.integer=143;
fwrite(&record,sizeof(record),1,fp);
fclose(fp);

f=open("records.dat",O_RDWR);
mapped=(RECORD *)mmap(0,NRECORDS*sizeof(record),PORT_READ|PORT_WRITE,MAP_SHARED,f,0);
mapped[43].integer=243;
sprintf(mapped[43].string,"RECORD-%d",mapped[43].integer);
msync((void *)mapped,NRECORDS*sizeof(record),MS_ASYNC);
munmap((void *)mapped,NRECORDS*sizeof(record));
close(f);
exit (0);
}

报错:

/home/sun/c/mmap/main.c||In function ‘main’:|
/home/sun/c/mmap/main.c|39|error: ‘PORT_READ’ undeclared (first use in this function)|
/home/sun/c/mmap/main.c|39|error: (Each undeclared identifier is reported only once|
/home/sun/c/mmap/main.c|39|error: for each function it appears in.)|
/home/sun/c/mmap/main.c|39|error: ‘PORT_WRITE’ undeclared (first use in this function)|
||=== Build finished: 4 errors, 0 warnings ===|
展开
 我来答
sillvester
2013-11-27 · TA获得超过220个赞
知道小有建树答主
回答量:219
采纳率:0%
帮助的人:195万
展开全部
我可以很无语的告诉你,是你拼写错误了。‘PORT_READ’
不是PORT是PROT
也就是 PROT_READ和PROT_WRITE
我是一样的问题,仔细检查就发现了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式