我正在尝试错误定位一个临时文件,但不幸的是,以下代码返回-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是否将零写入磁盘,或者是否将这些块标记为未初始化?
发布于 2012-02-23 14:24:28
听起来您使用的是32位系统,其中fallocate系统调用默认情况下接受一个(32位)整数。一些系统在fallocate64中也会有一个64位的对应物,它采用64位的偏移量和长度。试一试吧。
请注意,本机64位系统只有fallocate,但它需要64位参数。
https://stackoverflow.com/questions/9407792
复制相似问题