mmap出错,不知是什么原因.

zhouqianghfut 2009-11-21 02:08:23
RT...代码如下...

code:


int pid,fd, *share, i;
char ok[2], filename[6];

sprintf(filename, "%d", getpid());

if (fd = open(filename, O_RDWR | O_CREAT, 0664) == -1)
err_sys("creat tmpfile failed");
unlink(filename);
lseek(fd, sizeof(int) - 1, SEEK_SET);
write(fd, "A", 1);

share = (int *)mmap(NULL, sizeof(int), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
if (share == MAP_FAILED)
err_sys(" mmap failed");



错误:No such device

这是问为什么不成功啊,求教,谢谢...
...全文
307 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouqianghfut 2009-11-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 brookmill 的回复:]
不加括号,编译器会理解成  if (fd = ( open(filename, O_RDWR | O_CREAT, 0664) == -1) )

如果编译的时候用了gcc -Wall a.c
这里会有一个警告。所以用-Wall是个好习惯。


[/Quote]

嗯,谢谢啦,一大早的...结帖~~~~~~~~~~~~
brookmill 2009-11-21
  • 打赏
  • 举报
回复
不加括号,编译器会理解成 if (fd = ( open(filename, O_RDWR | O_CREAT, 0664) == -1) )

如果编译的时候用了gcc -Wall a.c
这里会有一个警告。所以用-Wall是个好习惯。

brookmill 2009-11-21
  • 打赏
  • 举报
回复
if ( ( fd = open(filename, O_RDWR | O_CREAT, 0664) ) == -1)

要加上括号。
=的优先级比==低

23,124

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧