2012-10-29 56 views
0

我試圖創建一個文件並通過系統調用操作向其複製一個256 MB大小的隨機字符,我無法理解我應該如何去做。使用系統調用操作創建文件並寫入隨機字符

很顯然,我需要的文件是txt文件,所以當我試圖用與O_RDWR標誌科瑞功能,但它並沒有創造一個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

+0

那麼,包含所有256個可能的8位字節模式的文件看起來不像文本文件,因爲值0-31和> = 128(假設ASCII)不是真正的文本文件, ish ... – twalberg

回答

1

creat()第二個參數是不一樣的open()的。

常數O_RDWR被定義爲2並被誤解爲文件模式位,這意味着您無法讀取該文件。

+0

我按照'man'命令的建議將它修改爲「S_IRWXU」,但該文件仍爲空。 – Jozef

0

檢查你的程序邏輯。 if (fd < 0)是錯誤的,write()從不執行。