Saya tidak percaya ini mungkin. The exec (2) system call selalu membutuhkan nama file atau path absolut (nama file selalu char*
). posix_spawn
juga memiliki persyaratan serupa untuk nama file.
Yang paling dekat Anda bisa lakukan adalah pipa output ke pipa bernama dan coba jalankan dari pipa. Itu mungkin berhasil, meskipun shell mungkin menolak untuk mengeksekusi file apa pun yang tidak memiliki --x--x--x
bit yang ditetapkan. Buat pipa dengan mkfifo(1)
dan lihat apakah Anda bisa membuatnya bekerja.
Pendekatan lain adalah menulis sesuatu yang membaca input standar, menulis file ke area temporay, menetapkan --x bit di atasnya, garpu dan eksekutif kemudian menghapus file. Inode dan konten akan tetap sampai program selesai dieksekusi tetapi tidak dapat diakses melalui sistem file. Ketika proses berakhir inode akan dirilis dan penyimpanan akan dikembalikan ke daftar gratis.
EDIT: Seperti yang ditunjukkan oleh Mat, pendekatan pertama tidak akan berhasil karena loader akan berusaha untuk meminta halaman pada file yang dapat dieksekusi, yang akan menghasilkan lalu lintas pencarian acak pada file, dan ini tidak mungkin dilakukan pada sebuah pipa. Ini meninggalkan semacam pendekatan seperti yang kedua.
csh
.