0

我正在尝试创建一个文件并通过系统调用操作将 256 MB 大小的随机字符复制到其中,我只是不明白该怎么做。

显然我需要文件是 txt 文件,所以当我尝试使用带有 O_RDWR 标志的creat函数但它没有创建 txt 文件时,这是我无法打开的未知文件。我在网上看到一个PERMS的东西,我不明白。这是我到目前为止写的:

char buff[1024*1024]; 
j=0;
for (i=0;i<(1024*1024);i++){
    if (j==256) j=0;

    buff[i]='a'+j;

    j++;
}

fd= open(argv[1], O_RDWR);
if (fd < 0) { 
    fd= creat(argv[1],O_RDWR);
    for (i=0; i<256; i++) {
        write(fd, buff, 1024*1024);
    }

它确实创建了文件,但它不可访问且大小为 0。

4

2 回答 2

1

第二个参数 ofcreat()与 of 不同open()

该常量O_RDWR定义为 2 并被误解为文件模式位,这意味着您无法读取文件。

于 2012-10-30T06:52:16.123 回答
0

检查您的程序逻辑。if (fd < 0)是假write()的,永远不会被执行。

于 2012-11-01T06:20:29.273 回答