Rumah > Artikel > Operasi dan penyelenggaraan > Apakah perbezaan antara fork dan exec dalam linux
Perbezaan antara fork dan exec dalam Linux: 1. Fork digunakan untuk mencipta proses baharu, dipanggil proses anak, manakala exec menggantikan keseluruhan kandungan proses semasa dengan program tertentu; selepas exec Id proses tidak berubah, tetapi id telah berubah selepas fork mencipta semula proses anak.
Persekitaran pengendalian tutorial ini: sistem linux7.3, komputer Dell G3.
Fork dan exec adalah kedua-dua panggilan berkaitan proses.
fork
Memanggil fork boleh mencipta proses baharu yang dipanggil proses anak, dan proses memanggil fungsi fork dipanggil proses induk Semua kandungan proses anak adalah sama dengan proses induk, kecuali pcd (modul kawalan proses). Jika kedua-dua proses tidak mempunyai Jika memori sedang ditulis, maka kedua-dua proses berkongsi halaman memori proses yang memanggil fungsi garpu Dengan cara ini, nampaknya proses yang dibuat oleh garpu adalah lebih cepat daripada proses yang dibuat oleh exec selagi salah satu daripada dua proses mengubah suai memori, maka sebelum pengubahsuaian, , salinan halaman memori akan disalin ke proses kanak-kanak. >Panggil exec untuk mencipta proses Sebenarnya, ia bukan penciptaan proses, tetapi lebih tepat, ia sedang memuatkan fail boleh laku, selepas memanggil exec, fail boleh laku yang dinyatakan dalam exec akan dimuatkan ke dalam ruang proses. memanggil exec, dan memori proses memanggil exec akan dikemas kini kepada kandungan fail boleh laku yang dinyatakan dalam exec
Perbezaan
fork direka terutamanya untuk Linux. untuk mencipta proses baharu (benang), manakala siri exec() digunakan untuk menggantikan semua proses semasa dengan program tertentu. Oleh itu, siri fungsi exec() sering dipanggil selepas tiga fungsi pertama digunakan untuk mewujudkan persekitaran berjalan program baharu. Proses Linux menggunakan proses init untuk memulakan proses lain biasanya seperti ini
fork ialah panggilan paling mudah, yang tidak memerlukan sebarang parameter Ia hanya mencipta proses anak dan mencipta ruang untuknya yang bebas daripada proses induk. Selepas kita menggunakan fungsi fork untuk mencipta proses baharu, kita sering memanggil fungsi exec dalam proses baharu untuk melaksanakan atur cara lain (contohnya, apabila kita menulis atur cara, kita perlu menggunakan fungsi a program yang telah kami tulis sebelum ini, Memanggil secara langsung program boleh laku dengan cara ini boleh memudahkan program kami). Apabila proses memanggil fungsi exec, proses itu digantikan sepenuhnya dengan program baharu. Oleh kerana memanggil fungsi exec tidak mencipta proses baharu, ID proses sebelumnya dan seterusnya tidak berubah.
Proses induk menjana proses anak yang sama melalui fork(). Proses anak yang dicipta kemudian menggunakan fungsi exec untuk melaksanakan proses sebenar, dan akhirnya menjadi proses yang boleh melaksanakan proses anak fungsional tertentu.
Sebaik sahaja proses memanggil fungsi kelas exec, ia sendiri "mati" Sistem menggantikan segmen kod dengan kod program baharu, membuang segmen data asal dan segmen tindanan, dan memperuntukkan kod baharu untuk program baru. Satu-satunya perkara yang tertinggal dalam segmen data dan segmen timbunan ialah nombor proses Dalam erti kata lain, kepada sistem, ia masih proses yang sama, tetapi ia sudah menjadi program lain. Iaitu, selepas memanggil fungsi keluarga exec, program seterusnya tidak akan dilaksanakan.
Pembelajaran yang disyorkan:
Tutorial video LinuxAtas ialah kandungan terperinci Apakah perbezaan antara fork dan exec dalam linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!