本来想测试函数 unlink,测试中发现write出现错误,不知为什么-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

本来想测试函数 unlink,测试中发现write出现错误,不知为什么

刚开始学习Linux c编程的菜鸟,本来想测试使用unlink函数创建临时文件,测试条件如下,已经存在文件 filein.txt,程序创建fileout.txt和filetemp.txt,首先拷贝filein.txt到filetemp.txt,然后再从filetemp.txt拷贝到fileout.txt,测试结果发现filetemp文件正常,但是fileout.txt为空,不知道为什么。。。代码如下

#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>

int main()
{
    int filein, fileout, filetemp;
    char buffer[128];
    int nread;

    filein = open("filein.txt", O_RDONLY);
    filetemp = open("filetemp.txt", O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);
    fileout = open("fileout.txt", O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);

    //拷贝filein.txt至filetemp.txt
    while( (nread = read(filein, buffer, sizeof(buffer) ) ) > 0)
        write(filetemp, buffer, nread);

    lseek(filetemp, 0, SEEK_SET);//重置filetemp.txt文件位置
    //拷贝filetemp.txt至fileout.txt
    while( ( nread = read( filetemp, buffer, sizeof(buffer) ) ) > 0)
        write(fileout, buffer, nread);

    close(filetemp);
//    unlink("filetemp.txt");

    return 0;
}

展开
收起
a123456678 2016-06-15 15:15:07 2057 0
1 条回答
写回答
取消 提交回答
  • filetemp = open("filetemp.txt", O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);

    在这一句上你打开 filetemp.txt 的方式是 CREATE + WRITE,没有赋 READ 的权限。

    2019-07-17 19:39:22
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
相关产品:
问答排行榜
最热
最新
相关电子书
更多
移动互联网测试到质量的转变
立即下载
给ITer的技术实战进阶课-阿里CIO学院独家教材(四)
立即下载
F2etest — 多浏览器兼容性测试整体解决方案
立即下载