Python:libc fallocate返回失败

时间:2012-02-23 05:41:41

标签: python

我正在尝试复制临时文件,但不幸的是下面的代码返回-1(失败):

import ctypes, tempfile
from ctypes import *

t_file=tempfile.NamedTemporaryFile(delete=True, dir=".", prefix="temp_file_")

libc=cdll.LoadLibrary("libc.so.6")
libc.fallocate(t_file.fileno(), c_int(0), c_longlong(0), c_longlong(102400))

但是,我可以通过命令行

完成以下操作
hdparm --fallocate 10 ./temp_file_foo

应该这样做。如果重要,这是在ext4文件系统上完成的。

我遇到的另一个问题是libc.fallocate是否将零写入磁盘,还是将块标记为未初始化?

1 个答案:

答案 0 :(得分:3)

听起来像是在32位系统上,fallocate系统调用默认采用(32位)整数。有些系统在fallocate64中也会有一个64位的对应物,它需要64位的偏移量和长度。试试吧。

请注意,本机64位系统只有fallocate,但它需要64位参数。