-
Buat file dengan ukuran yang Anda inginkan (di sini 10MB)
dd if=/dev/zero of=/home/qdii/test bs=1024 count=10000
-
Buat perangkat loopback dari file ini
losetup -f /home/qdii/test
-
Format perangkat itu dalam sistem file yang Anda inginkan
mkfs.ext4 /dev/loopXXX
-
Pasang di mana pun Anda mau (
/mnt/test
harus ada)sudo mount /dev/loopXXX /mnt/test
-
Salin program Anda di partisi itu dan uji
cp /path/my/program /mnt/test && cd /mnt/test && ./program
Gantikan /dev/loopXXX
dengan perangkat loop losetup
dibuat, cari tahu dengan losetup -a
.
Setelah selesai, jangan lupa untuk:
- unmount dengan
sudo umount /mnt/test
. - bersihkan perangkat loop setelah digunakan, dengan
losetup -D /dev/loopXXX
- hapus file tersebut.
Kemungkinan lain adalah mengurangi batas yang sesuai dengan syscall setrlimit(2) dengan RLIMIT_FSIZE
atau dengan bash
ulimit bawaan (menggunakan -f
). Maka write(2) akan gagal dengan EFBIG
Dan Anda juga dapat menetapkan beberapa kuota pada beberapa sistem file yang sesuai, jadi write(2)
gagal dengan EDQOT
.
Jika Anda menginginkan ENOSPC
yang sebenarnya kesalahan ke write(2)
Anda mungkin memerlukan sistem file loopback seperti yang dijawab oleh qdii.
BTW, saya tidak begitu tahu cara "meniru" EIO
kesalahan (mungkin dengan beberapa sistem file FUSE?).
Banyak program menangani write(2)
kesalahan (dan hampir semua seharusnya). Tapi saya tidak tahu banyak program yang menangani sangat berbeda berbagai kesalahan yang mungkin terjadi dengan write(2)
. Sebagian besar program menangani semua write(2)
kesalahan dengan cara yang sama.
Cukup gunakan /dev/full, itu akan meningkatkan kesalahan ENOSPC ketika Anda mencoba menulisnya:
$ echo "Hello world" > /dev/full
bash: echo: write error: No space left on device