Saya mencoba menjalankan contoh program java menggunakan baris perintah berikut. Namun, saya tidak tahu untuk apa trailing part < /dev/null &
digunakan?
java -cp /home/weka.jar weka.classifiers.trees.J48 –t train_file >& log < /dev/null &
Saya mencoba menjalankan contoh program java menggunakan baris perintah berikut. Namun, saya tidak tahu untuk apa trailing part < /dev/null &
digunakan?
java -cp /home/weka.jar weka.classifiers.trees.J48 –t train_file >& log < /dev/null &
Jawaban:
< /dev/null
digunakan untuk langsung mengirim EOF ke program, sehingga tidak menunggu input ( /dev/null
, perangkat nol, adalah file khusus yang membuang semua data yang ditulis padanya, tetapi melaporkan bahwa operasi penulisan berhasil, dan tidak menyediakan data untuk setiap proses yang membacanya, menghasilkan EOF segera). &
adalah jenis khusus pemisah perintah yang digunakan untuk latar belakang proses sebelumnya.
Tanpa mengetahui program yang dipanggil, saya tidak langsung tahu mengapa harus menjalankannya dengan cara ini.
</dev/null
memutus input program dari terminal. Beberapa program bereaksi berbeda tergantung pada apa input standar mereka terhubung. Dengan pengalihan </dev/null
, program dapat mengetahui bahwa inputnya tidak berasal dari terminal, dan akan segera menerima indikasi akhir file jika mencoba membaca dari input standarnya.
Satu-satunya &
di akhir menyebabkan program dieksekusi di latar belakang. Ini berarti Anda mendapatkan prompt shell segera kembali. Tanpa &
, Anda akan mendapatkan shell prompt kembali hanya ketika program selesai dijalankan.
Perhatikan bahwa standalone &
tidak terkait dengan >&
. >&
adalah operator pengalihan (dalam tcsh, bash dan zsh) yang mengarahkan ulang output standar program dan kesalahan standar program ke nama file yang ditentukan setelah operator (di sini log
).
Dengan kata lain, apa yang dilakukan shell ketika ia melihat baris perintah ini adalah:
/dev/null
( perangkat nol ).log
(membuat file jika belum ada, dan memotongnya jika ada).java
di $PATH
.-cp
, /home/weka.jar
, weka.classifiers.trees.J48
, –t
, train_file`.