Rumah >Operasi dan penyelenggaraan >operasi dan penyelenggaraan linux >Apakah perbezaan antara fork dan exec dalam linux

Apakah perbezaan antara fork dan exec dalam linux

WBOY
WBOYasal
2022-05-17 15:52:352680semak imbas

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.

Apakah perbezaan antara fork dan exec dalam linux

Persekitaran pengendalian tutorial ini: sistem linux7.3, komputer Dell G3.

Apakah perbezaan antara fork dan exec dalam Linux

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 Linux

Atas ialah kandungan terperinci Apakah perbezaan antara fork dan exec dalam linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn