Arahan exec digunakan dalam Linux untuk memanggil dan melaksanakan arahan yang ditentukan. Perintah exec biasanya digunakan dalam skrip shell untuk melaksanakan arahan lain. Apabila menggunakan perintah exec dalam terminal semasa, arahan yang ditentukan akan menggantikan proses semasa selepas pelaksanaan, bukannya mencipta proses anak baharu.
exec [选项]
Pilihan | Maksudnya |
---|---|
-c | Gunakan persekitaran kosong untuk melaksanakan |
-a | Cangkang akan menghantar nama sebagai argumen sifar kepada arahan yang dilaksanakan |
-l | Letakkan sempang pada permulaan shell untuk menghantar parameter kepada arahan |
// 首先使用echo命令将文本“www.linuxyz.cn”进行输出: [root@bunian ~]# echo www.bunian.cn www.bunian.cn // 然后再使用exec命令调用echo命令输出同样的信息,并且对输出的信息进行对比,输入指令如下所示: [root@bunian ~]# exec -c echo www.bunian.cn www.bunian.cn // 通过比较两者执行后的结果来看,所实现的功能是相同的,即使用exec命令调用echo命令成功。
// 查找bunian.txt 并备份为bunian.txt.bak [root@bunian ~]# find /test -name "bunian.txt" -exec cp {} {}.bak \;
1 Exec panggilan sistem menggantikan proses asal dengan proses baharu, tetapi PID proses itu kekal tidak berubah. Oleh itu, boleh dianggap bahawa panggilan sistem exec tidak mencipta proses baharu, tetapi hanya menggantikan kandungan konteks proses asal. Segmen kod, segmen data dan segmen tindanan proses asal digantikan dengan proses baharu.
Sesuatu proses terutamanya merangkumi aspek berikut:
2. exec ialah kluster fungsi, terdiri daripada 6 fungsi, bermula dengan excl dan execv.
Untuk melaksanakan panggilan sistem exec, ini biasanya berlaku Gunakan fungsi fork() untuk mencipta proses baharu, dan kemudian biarkan proses melaksanakan panggilan exec. Kami tahu bahawa selepas fork() mencipta proses baharu, proses induk berkongsi segmen kod dengan proses anak, tetapi ruang data adalah berasingan, tetapi proses induk akan menyalin kandungan ruang datanya sendiri ke proses anak, dan konteks juga akan Ia akan disalin ke proses kanak-kanak. Untuk meningkatkan kecekapan, strategi salin-tulis diguna pakai, iaitu, apabila proses anak dicipta, ruang alamat proses induk tidak disalin Proses ibu bapa dan anak mempunyai ruang alamat yang sama, dan hanya apabila proses anak perlu menulis data (seperti Menulis data ke dalam penimbal), pada masa ini ruang alamat akan disalin dan penimbal akan disalin ke proses anak. Akibatnya, proses ibu bapa dan anak mempunyai ruang alamat bebas. Untuk exec selepas fork(), strategi ini boleh meningkatkan kecekapan dengan ketara Jika anda menyalin pada mulanya, maka selepas exec, data proses anak akan ditinggalkan dan digantikan dengan proses baharu.
Atas ialah kandungan terperinci Manual arahan Linux exec. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!