免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: leeews
打印 上一主题 下一主题

关于open函数 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-09-18 12:27 |只看该作者
本身没有这个文件,是要创建这个文件
运行之后这个文件是确实被创建了,但是返回的fd却是0.

[ 本帖最后由 leeews 于 2008-9-18 12:29 编辑 ]

论坛徽章:
0
12 [报告]
发表于 2008-09-18 13:02 |只看该作者
发现第一次用open创建文件的时候返回的cfd为0
但是之后第二次再
cfd=open("/mnt/flash/123", O_RDWR);
打开的话,就能正常读写了。。。奇怪的问题。。

论坛徽章:
0
13 [报告]
发表于 2008-09-18 13:06 |只看该作者
原帖由 leeews 于 2008-9-18 13:02 发表
发现第一次用open创建文件的时候返回的cfd为0
但是之后第二次再
cfd=open("/mnt/flash/123", O_RDWR);
打开的话,就能正常读写了。。。奇怪的问题。。


检查一下程序是否有越界或缓冲区溢出等的潜在问题.

论坛徽章:
0
14 [报告]
发表于 2008-09-18 13:29 |只看该作者
#include <stdio.h>
#include <sys/mount.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>


int main(void)
{
    int cfd;
    if(mount("/dev/hda1","/mnt/flash","vfat",0,NULL) == -1){
        perror("mount");
    }
    if(cfd=open("/mnt/flash/123", O_CREAT|O_RDWR) ==-1){
        perror("open");
    }
    printf("%d\n",cfd);//此处为0
    cfd = open("/mnt/flash/123", O_RDWR);
    printf("%d\n",cfd);//此处返回正常值。
    if(write(cfd,"aa",strlen("aa"))==-1){
        perror("wirte");
    }
    umount("/mnt/flash");
}




就这样简单一个程序,也没用指针,数组啥的,应该没有越界,溢出问题吧。

论坛徽章:
0
15 [报告]
发表于 2008-09-18 13:38 |只看该作者
原帖由 leeews 于 2008-9-18 13:29 发表
#include
#include
#include
#include
#include


int main(void)
{
    int cfd;
    if(mount("/dev/hda1","/mnt/flash","vfat",0,NULL) == -1){
        perror("mount";
    }
    if(c ...

论坛徽章:
0
16 [报告]
发表于 2008-09-18 13:53 |只看该作者
if中少括号了。。

论坛徽章:
0
17 [报告]
发表于 2008-09-18 13:53 |只看该作者
。。。。。。。。。。。。。。。。。。。。。。
只有个笑脸。。。。。。。。。。

论坛徽章:
0
18 [报告]
发表于 2008-09-18 13:55 |只看该作者
原帖由 cugb_cat 于 2008-9-18 13:53 发表
if中少括号了。。

代码在另一台机器上,可能刚才贴帖子的时候抄错了。

论坛徽章:
0
19 [报告]
发表于 2008-09-18 14:04 |只看该作者
原帖由 leeews 于 2008-9-18 13:55 发表

代码在另一台机器上,可能刚才贴帖子的时候抄错了。

先去看看是不是这么回事。。
照现象来看,应该是这么回事。。。

论坛徽章:
0
20 [报告]
发表于 2008-09-18 15:32 |只看该作者
果然是括号的问题。。。

[ 本帖最后由 leeews 于 2008-9-18 15:36 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP