QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 681|回复: 3

请问一个关于write的问题

[复制链接]
发表于 2005-6-8 15:23:46 | 显示全部楼层 |阅读模式
写了一个简单的程序:
#include<stdio.h>
#include<string.h>
#include<linux/unistd.h>
#include<unistd.h>
_syscall3(long,open,char *,name,int,mode,int,flags)
int main()
{
        int dest,len,fid;
        char buffer[3]={'c','c','c'};
        int i;
       
        fid=open("/root/abc",0,10700);
        dest=lseek(fid,2,0);
        printf("%s\n",buffer);
        printf("%d\n",dest);
        if(dest!=2)
        {
                printf("Error:seek error.\n");
                return 0;
        }
        len=write(fid,buffer,1);
        printf("%d\n%d\n",fid,len);
        close(fid);
        return 1;
}

程序无法写入文件abc, 调用write后返回的len总是-1, abc内内容是abc, abc的属性是-rw-r-r
实在找不出原因, 请教了,谢谢
发表于 2005-6-9 16:04:07 | 显示全部楼层
[code:1]
#include<stdio.h>
#include<fcntl.h>
int main()
{
    int dest,len,fid;
    char buffer[3]={'c','c','c'};
    int i;

    fid=open("/root/abc",O_RDWR);
    dest=lseek(fid,2,0);
    printf("%s\n",buffer);
    printf("%d\n",dest);
    if(dest!=2)
    {
        printf("Error:seek error.\n");
        return 0;
    }
    len=write(fid,buffer,1);
    printf("%d\n%d\n",fid,len);
    close(fid);
    return 1;
}
[/code:1]
回复

使用道具 举报

发表于 2005-6-10 07:16:14 | 显示全部楼层
[code:1] fid=open("/root/abc",0,10700); [/code:1]
open 模式是 0,不出错才怪。
只是奇怪为什么 lseek 没有出错
回复

使用道具 举报

 楼主| 发表于 2005-6-10 10:49:54 | 显示全部楼层
谢谢
原先把一个read的代码复制稍改了一下,倒没注意open的问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-5 22:06 , Processed in 0.057224 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表