将文件映射到内存后出现分段错误

时间:2017-02-08 22:40:31

标签: c file aes mmap

我正在尝试“mmap”二进制文件,以便使用AES对其进行加密,然后使用以下代码将加密数据写入另一个文件(outFile)。我试图修改mmap()和open()两个函数的标志,但是当我运行可执行文件时,我总是遇到分段错误。

awk 'length($1)==4{count[$1]++}
    END{for(i in count) print i": "count[i]}
' RS=\( FS=@ input-file

1 个答案:

答案 0 :(得分:1)

正如yano在评论中提到的,你的错误就在这里:

 memcpy(outFile, ciphertext, sb.st_size);

您正试图memcpy到FILE *这是完全错误的。这并不是你所期望的。您正在覆盖FILE指向的outFile结构的私人内部。

您应该在缓冲区上操作并使用fwrite写入文件。

我建议您在深入f...和加密之前熟悉使用mmap函数的基本文件I / O操作。