Exec - Perintah Linux - Perintah Unix

exec - Meminta subprocess (es)

Ringkasan

exec ? switch ? arg ? arg ... ?

Deskripsi

Perintah ini memperlakukan argumennya sebagai spesifikasi satu atau lebih subproses untuk dijalankan. Argumen mengambil bentuk pipeline shell standar di mana setiap arg menjadi satu kata dari sebuah perintah, dan setiap perintah yang berbeda menjadi subprocess.

Jika argumen awal untuk exec dimulai dengan - maka mereka diperlakukan sebagai switch baris perintah dan bukan bagian dari spesifikasi saluran pipa. Saklar berikut saat ini didukung:

-tetapnewline

Mempertahankan baris baru di belakang dalam output saluran pipa. Biasanya baris baru di belakang akan dihapus.

-

Menandai akhir dari switch. Argumen yang mengikuti ini akan diperlakukan sebagai argumen pertama meskipun diawali dengan - .

Jika arg (atau pasangan arg 's) memiliki salah satu bentuk yang dijelaskan di bawah ini maka digunakan oleh exec untuk mengontrol aliran input dan output di antara subproses (es). Argumen semacam itu tidak akan diteruskan ke subproses (es). Dalam bentuk seperti `` < fileName '' fileName dapat berupa argumen terpisah dari `` <'' atau dalam argumen yang sama tanpa spasi (yaitu `` < fileName '').

|

Pisahkan perintah yang berbeda di dalam pipa. Output standar dari perintah sebelumnya akan disalurkan ke input standar dari perintah selanjutnya.

| &

Pisahkan perintah yang berbeda di dalam pipa. Kedua output standar dan kesalahan standar dari perintah sebelumnya akan disalurkan ke input standar dari perintah berikutnya. Bentuk pengalihan ini mengesampingkan bentuk seperti 2> dan> &.

file

File yang dinamai oleh fileName dibuka dan digunakan sebagai input standar untuk perintah pertama di dalam pipeline.

<@ fileId

FileId harus merupakan pengenal untuk file yang terbuka, seperti nilai kembalian dari panggilan sebelumnya untuk dibuka . Ini digunakan sebagai input standar untuk perintah pertama dalam pipa. FileId pasti sudah dibuka untuk dibaca.

<< nilai

Nilai diteruskan ke perintah pertama sebagai input standarnya.

> nama file

Output standar dari perintah terakhir dialihkan ke file bernama fileName , menimpa isi sebelumnya.

2> nama file

Kesalahan standar dari semua perintah di dalam pipeline dialihkan ke file bernama fileName , menimpa konten sebelumnya.

> & fileName

Kedua output standar dari perintah terakhir dan kesalahan standar dari semua perintah dialihkan ke file bernama fileName , menimpa isi sebelumnya.

>> nama file

Output standar dari perintah terakhir dialihkan ke file bernama nama file , menambahkannya daripada menimpanya.

2 >> nama file

Kesalahan standar dari semua perintah di dalam pipeline dialihkan ke file bernama fileName , menambahkannya daripada menimpanya.

>> & fileName

Kedua output standar dari perintah terakhir dan kesalahan standar dari semua perintah dialihkan ke file bernama nama file , menambahkannya daripada menimpanya.

> @ fileId

FileId harus merupakan pengenal untuk file yang terbuka, seperti nilai kembalian dari panggilan sebelumnya untuk dibuka . Output standar dari perintah terakhir dialihkan ke file fileId , yang pasti sudah dibuka untuk ditulis.

2> @ fileId

FileId harus merupakan pengenal untuk file yang terbuka, seperti nilai kembalian dari panggilan sebelumnya untuk dibuka . Kesalahan standar dari semua perintah di dalam pipeline dialihkan ke file file PDF . File harus dibuka untuk ditulis.

> & @ fileId

FileId harus merupakan pengenal untuk file yang terbuka, seperti nilai kembalian dari panggilan sebelumnya untuk dibuka . Kedua keluaran standar dari perintah terakhir dan kesalahan standar dari semua perintah dialihkan ke file file PDF . File harus dibuka untuk ditulis.

Jika output standar belum diarahkan maka perintah exec mengembalikan output standar dari perintah terakhir di dalam pipeline. Jika salah satu perintah di saluran keluar secara tidak normal atau terbunuh atau ditangguhkan, maka exec akan mengembalikan kesalahan dan pesan kesalahan akan menyertakan output saluran pipa diikuti oleh pesan kesalahan yang menjelaskan penghentian abnormal; variabel errorCode akan berisi informasi tambahan tentang penghentian abnormal terakhir yang dihadapi. Jika ada perintah yang menulis ke file kesalahan standar dan bahwa kesalahan standar tidak diarahkan, maka exec akan mengembalikan kesalahan; pesan kesalahan akan menyertakan output standar pipa, diikuti oleh pesan tentang penghentian abnormal (jika ada), diikuti oleh output kesalahan standar.

Jika karakter terakhir dari hasil atau pesan kesalahan adalah baris baru maka karakter tersebut biasanya dihapus dari hasil atau pesan kesalahan. Ini konsisten dengan nilai pengembalian Tcl lainnya, yang biasanya tidak diakhiri dengan baris baru. Namun, jika -keepnewline ditentukan maka baris baru di belakang dipertahankan.

Jika input standar tidak dialihkan dengan `` <'' atau `` << '' atau `` <@ '' maka input standar untuk perintah pertama dalam pipa diambil dari input standar aplikasi saat ini.

Jika argumen terakhir adalah `` & '' maka pipeline akan dieksekusi di latar belakang. Dalam hal ini perintah exec akan mengembalikan daftar yang elemen-elemennya merupakan pengidentifikasi proses untuk semua subproses dalam pipeline. Output standar dari perintah terakhir dalam pipa akan pergi ke output standar aplikasi jika belum diarahkan, dan output kesalahan dari semua perintah dalam pipa akan masuk ke file kesalahan standar aplikasi kecuali dialihkan.

Kata pertama di setiap perintah diambil sebagai nama perintah; tilde-substitusi dilakukan di atasnya, dan jika hasilnya tidak berisi garis miring maka direktori dalam variabel lingkungan PATH dicari untuk dieksekusi dengan nama yang diberikan. Jika nama berisi garis miring maka itu harus merujuk ke file yang dapat dieksekusi yang dapat dijangkau dari direktori saat ini. Ekspansi tanpa `` glob '' atau substitusi mirip-shell lainnya dilakukan pada argumen ke perintah.

Masalah Portabilitas

Windows (semua versi)

Membaca dari atau menulis ke soket, menggunakan notasi `` @ fileId '', tidak berfungsi. Ketika membaca dari soket, aplikasi DOS 16-bit akan hang dan aplikasi 32-bit akan segera kembali dengan akhir-file. Ketika salah satu jenis aplikasi menulis ke soket, informasi tersebut malah dikirim ke konsol, jika ada, atau dibuang.

Widget teks konsol Tk tidak memberikan kemampuan IO standar nyata. Di bawah Tk, ketika mengalihkan dari input standar, semua aplikasi akan melihat akhir-file langsung; informasi yang diarahkan ke output standar atau kesalahan standar akan dibuang.

Entah garis miring ke depan atau ke belakang diterima sebagai pemisah jalur untuk argumen ke perintah Tcl. Saat menjalankan aplikasi, nama jalur yang ditentukan untuk aplikasi juga dapat berisi garis miring ke depan atau belakang sebagai pemisah jalur. Ingatlah, bagaimanapun, bahwa sebagian besar aplikasi Windows menerima argumen dengan garis miring ke depan hanya sebagai pembatas opsi dan backslash hanya di jalur. Argumen apa pun ke aplikasi yang menentukan nama jalur dengan garis miring ke depan tidak akan secara otomatis dikonversi untuk menggunakan karakter backslash. Jika argumen berisi garis miring ke depan sebagai pemisah jalur, itu mungkin atau mungkin tidak diakui sebagai nama jalan, tergantung pada program.

Selain itu, ketika memanggil aplikasi 16-bit DOS atau Windows 3.X, semua nama jalur harus menggunakan format jalan singkat, samar, (misalnya, menggunakan `` applba ~ 1.def '' daripada `` applbakery.default '' ).

Dua atau lebih garis miring ke depan atau belakang berturut-turut dalam jalur mengacu pada jalur jaringan. Sebagai contoh, rangkaian sederhana dari direktori root c: / dengan subdirektori / windows / sistem akan menghasilkan c: // windows / system (dua garis miring bersama), yang mengacu pada titik mount yang disebut sistem pada mesin yang disebut windows (dan c: / diabaikan), dan tidak setara dengan c: / windows / system , yang menggambarkan direktori pada komputer saat ini. Perintah join file harus digunakan untuk menggabungkan komponen path.

Windows NT

Ketika mencoba menjalankan aplikasi, exec pertama mencari nama seperti yang ditentukan. Kemudian, dalam rangka, .com , .exe , dan .bat ditambahkan ke akhir nama yang ditentukan dan mencari nama yang lebih panjang. Jika nama direktori tidak ditentukan sebagai bagian dari nama aplikasi, direktori berikut secara otomatis dicari ketika mencoba untuk mencari aplikasi:

Direktori tempat Tcl dieksekusi dimuat.
Direktori saat ini.
Direktori sistem 32-bit Windows NT.
Direktori sistem Windows NT 16-bit.
Direktori home Windows NT.
Direktori yang terdaftar di jalur.

Untuk menjalankan perintah shell builtin seperti dir dan copy , pemanggil harus menambahkan `` cmd.exe / c '' ke perintah yang diinginkan.

Windows 95

Ketika mencoba menjalankan aplikasi, exec pertama mencari nama seperti yang ditentukan. Kemudian, dalam rangka, .com , .exe , dan .bat ditambahkan ke akhir nama yang ditentukan dan mencari nama yang lebih panjang. Jika nama direktori tidak ditentukan sebagai bagian dari nama aplikasi, direktori berikut secara otomatis dicari ketika mencoba untuk mencari aplikasi:

Direktori tempat Tcl dieksekusi dimuat.
Direktori saat ini.
Direktori sistem Windows 95.
Direktori home Windows 95.
Direktori yang terdaftar di jalur.

Untuk menjalankan perintah shell builtin seperti dir dan copy , pemanggil harus menambahkan `` command.com / c '' ke perintah yang diinginkan.

Setelah aplikasi DOS 16-bit telah membaca input standar dari konsol dan kemudian berhenti, semua kemudian menjalankan aplikasi 16-bit DOS akan melihat input standar seperti yang sudah ditutup. Aplikasi 32-bit tidak memiliki masalah ini dan akan berjalan dengan benar, bahkan setelah aplikasi DOS 16-bit berpikir bahwa input standar ditutup. Tidak ada solusi yang diketahui untuk bug ini saat ini.

Pengalihan antara NUL: perangkat dan aplikasi 16-bit tidak selalu berfungsi. Ketika mengalihkan dari NUL:, beberapa aplikasi mungkin hang, yang lain akan mendapatkan aliran tak terbatas `` 0x01 '' byte, dan beberapa akan benar-benar mendapatkan end-of-file segera; perilaku tampaknya bergantung pada sesuatu yang dikompilasi ke dalam aplikasi itu sendiri. Saat mengalihkan lebih dari 4K atau lebih ke NUL:, beberapa aplikasi akan hang. Masalah di atas tidak terjadi dengan aplikasi 32-bit.

Semua aplikasi 16-bit DOS dijalankan secara bersamaan. Semua input standar dari sebuah pipa ke aplikasi DOS 16-bit dikumpulkan ke dalam file sementara; ujung lain dari pipa harus ditutup sebelum aplikasi 16-bit DOS mulai dieksekusi. Semua output standar atau kesalahan dari aplikasi DOS 16-bit ke pipa dikumpulkan ke file sementara; aplikasi harus berhenti sebelum file sementara dialihkan ke tahap berikutnya dari pipeline. Hal ini disebabkan solusi untuk bug Windows 95 dalam penerapan pipa, dan bagaimana shell Windows 95 DOS standar menangani pipa itu sendiri.

Aplikasi tertentu, seperti command.com , tidak boleh dijalankan secara interaktif. Aplikasi yang secara langsung mengakses jendela konsol, daripada membaca dari input standar dan menulis ke output standar mereka mungkin gagal, hang Tcl, atau bahkan menggantung sistem jika jendela konsol pribadi mereka tidak tersedia untuk mereka.

Jas hujan

Perintah exec tidak diimplementasikan dan tidak ada di bawah Macintosh.

Unix

Perintah exec berfungsi penuh dan berfungsi seperti yang dijelaskan.

Lihat juga

kesalahan (n), buka (n)

Kata kunci

mengeksekusi, pipeline, redirection, subprocess

Penting: Gunakan perintah man ( % man ) untuk melihat bagaimana perintah digunakan pada komputer khusus Anda.