Saya memiliki program yang menyimpan pengaturannya di ~/.config/myprogram
yang saya gunakan baik secara interaktif dan dengan sistem antrian batch. Saat berjalan secara interaktif, saya ingin program ini menggunakan file konfigurasi saya (dan memang demikian). Tetapi ketika menjalankan dalam mode batch, file konfigurasi tidak diperlukan karena saya menentukan opsi baris perintah yang menimpa semua pengaturan yang relevan. Selanjutnya, mengakses file konfigurasi melalui jaringan meningkatkan waktu startup program beberapa detik; jika file tidak ada, program diluncurkan lebih cepat (karena setiap pekerjaan hanya membutuhkan waktu sekitar satu menit, ini memiliki dampak signifikan pada throughput pekerjaan batch). Tetapi karena saya juga menggunakan program ini secara interaktif, saya tidak ingin memindahkan / menghapus file konfigurasi saya sepanjang waktu. Bergantung pada kapan pekerjaan batch saya dijadwalkan pada cluster (berdasarkan penggunaan pengguna lain),
(Selain itu: kinerja file jaringan sangat lambat mungkin adalah bug, tapi saya hanya pengguna cluster, jadi saya hanya bisa mengatasinya, tidak memperbaikinya.)
Saya bisa membuat versi program yang tidak membaca file konfigurasi (atau memiliki opsi baris perintah untuk tidak) untuk penggunaan batch, tetapi lingkungan build program ini tidak dirancang dengan baik dan sulit diatur. Saya lebih suka menggunakan binari yang diinstal melalui manajer paket sistem saya.
Bagaimana saya bisa mengelabui contoh tertentu dari program ini untuk berpura-pura file konfigurasi saya tidak ada (tanpa memodifikasi program)? Saya berharap untuk pembungkus formulir pretendfiledoesntexist ~/.config/myprogram -- myprogram --various-options...
, tetapi saya terbuka untuk solusi lain.
LD_PRELOAD
pengait. Itu lebih mudah (Anda dapat mengimplementasikannya dalam satu atau dua jam, jika Anda tahu C) daripada alternatifnya, yaitu ptrace
. Anda juga mungkin bisa menggunakan fakechroot untuk melakukan ini (saya yakin, itu adalah LD_PRELOAD).