Pengaturcaraan C

Pengekodan dengan garpu dan contoh dengan contoh di c

Pengekodan dengan garpu dan contoh dengan contoh di c
Tajuk artikel kami mengandungi dua fungsi berbeza dari bahasa C yang berlaku semasa menjalankan sebarang program dalam sistem kami. Sayangnya, tidak ada kemungkinan berlaku lebih dari satu program pada satu masa di C. Hanya satu tugas yang dapat dilakukan pada waktu tertentu, yang bermaksud ia tidak membenarkan program serentak berjalan. Ini menyebabkan anda menunggu penyelesaian satu proses untuk melaksanakan proses yang lain. Untuk mengelakkan masalah mengatasi masalah ini, anda mungkin perlu mengembangkan program anda dengan cara yang baik, menjadi pembangun yang baik. Garpu Linux () digunakan untuk mengatasi penantian dan untuk membenarkan kesesuaian dalam sistem anda. Ini membantu dalam mendua proses baru dan membuat proses baru dengan memanggil proses pendua. Proses baru adalah proses anak, dan proses sebelumnya disebut proses ibu bapa.

Manakala, fungsi exec () digunakan untuk mengubah program yang ada sekarang dengan yang baru. Penggantian ini dilakukan dengan membuat pindaan terhadap kandungan program atau fail. Jadi perbezaan antara garpu dan exec adalah bahawa garpu membuat proses baru dari proses yang ada, dan exec digunakan untuk menggantikan program yang ada dengan membuat yang baru.

Prasyarat

Untuk melaksanakan program c pada sistem Linux anda, kita perlu memasang beberapa prasyarat di atasnya. Pergi ke terminal dengan menggunakan kaedah pintasan Ctrl + Alt + T. Sekarang tulis arahan berikut untuk memasang halaman manual.

$ sudo apt install manpages-dev

Ia akan memasang semua halaman yang sesuai.

Melangkah ke hadapan, untuk menjalankan program di Linux, anda perlu memasang penyusun kod. Itu digunakan untuk menyusun kod dan melaksanakannya. Untuk tujuan ini, kami akan memasang repositori GCC dalam sistem kami.

$ sudo apt pasangkan GCC

Pengekodan dengan exec di c

Semasa kami memasang halaman manual di Linux, kami akan menggunakan perintah berikut untuk melihat keterangan mengenai exec. Sintaks sampel utama adalah seperti berikut:

Sintaks

Exec (nama jalan / fail, argv);

Di sini kita telah menggunakan "unistd.h ”tajuk kerana mengandungi semua maklumat keluarga yang mempunyai fungsi exec.

$ lelaki exec

Sekarang dalam gambar yang disebutkan di atas, anda dapat melihat jenis exec. Ini adalah keluarga fungsi exec. Masing-masing untuk fungsi yang berbeza mengikuti pangkalan yang sama, "exec."

Contoh: Sekarang, kita akan menerangkan fungsi exec dengan bantuan contoh. Kami akan menggunakan satu fungsi exec untuk menunjukkan kerjanya, iaitu "execv."Pertama, kami akan membuat dua fail dengan sambungan".c."Setelah dibuat, kami akan menulis kod masing-masing di dalamnya dan melaksanakannya untuk melihat hasilnya.

Pertimbangkan nama fail "sample4.c ”. Sila buka dan gunakan kod berikut. Dalam kod ini, kami telah menggunakan execv dengan cara tertentu yang disebutkan di bawah.

Execv (“./ sample4copy ”, args);

Bahagian pertama mengandungi jalur direktori baru, dan bahagian kedua menunjukkan array argumen sebagai parameter yang telah kami lalui.

Contoh4.c

Pertama sekali, kami telah mencetak id proses semasa. Kedua, kami telah membuat array watak yang mempunyai NULL pada akhirnya untuk penamatan. Ketiga kita memanggil fungsi sample4copy.

Contoh4 salinan.c

Apabila kita memanggil fungsi exec (), gambar proses diubah. Gambar yang dipetik di bawah menunjukkan kod contoh4copy.c.

Di sini kami hanya menggunakan pernyataan cetak untuk mendapatkan id proses semasa.

Hasil kod masing-masing dapat diperoleh dengan menggunakan perintah berikut.

$ GCC-o sampel4 sampel4.c
$ GCC -o sample4copy sample4copy.c
$ ./ sampel4

Seperti yang telah kami jelaskan sebelumnya, kata "GCC" digunakan untuk menyusun kod, dan setelah menyusunnya, kod tersebut berhasil dilaksanakan.

Menurut gambar, PID sampel4.fail c ditunjukkan pertama seperti yang dinyatakan sebelum panggilan exec. Kemudian setelah fungsi exec () dipanggil, kedua-dua pernyataan cetak file4copy.c dijalankan di mana getpid () digunakan untuk mendapatkan id proses.

Pengekodan dengan garpu di c

Fungsi garpu () mencipta proses anak dari proses ibu bapa. Ia juga mengandungi dua tajuk, termasuk maklumat garpu di dalamnya.

Sintaks:

Pid_t garpu (tidak sah);

Kita boleh menggunakan halaman manual untuk mendapatkan bantuan dalam penggunaannya

$ garpu lelaki

Contoh: Sekarang pertimbangkan satu contoh dengan membuat fail “sample3.c ”. Kami akan memasukkan kod di dalam fail. Menurut kod, kami telah menetapkan status garpu sebagai forkrank.

Contoh3.c

Kami telah menggunakan pernyataan "if-else" untuk menerapkan syarat tersebut. Perintah cetak mudah dinyatakan di sini untuk membantu memahami konsep garpu (). Forkrank pertama kali dinyatakan sebagai 0 dan kemudian -1. Dengan garpu (), kini terdapat dua proses yang berjalan serentak. Output dapat diperoleh dengan menggunakan kod yang sama, seperti yang digunakan di atas dalam contoh exec.

$ GCC -o sampel3.c
$./ sampel3

Hasilnya menunjukkan bahawa proses anak dijalankan lebih awal daripada ibu bapa ketika proses ibu bapa sedang menunggu. Fungsi tunggu menyiratkan bahawa ia menyebabkan fungsi ibu bapa menunggu kecuali salah satu daripada semua proses anak ditamatkan.

Panggilan sistem Fork dan Exec Secara Kolektif

Di sini kita akan mengambil dua fail bernama “sample1.c "dan" sampel2.c ”. Pertama, buka fail sampl1.c dan tuliskan kod yang dilampirkan di bawah dalam gambar. Kami telah menggunakan sistem panggilan fork () di sini; semasa proses anak dibuat, p akan ditugaskan dengan 0. Semasa menggunakan sistem panggilan exec, sampel1.c akan diganti dengan sampel2.c.

Contoh1.c

Contoh2.c

Sama seperti contoh yang dibincangkan di atas, fail sample2 akan mengandungi pernyataan printf di dalamnya. Dalam sampel1.c, perintah cetak pertama dijalankan terlebih dahulu, kemudian fungsi garpu dipanggil, apabila p == 0, maka bahagian anak dijalankan dan contoh2.fail c akan dijalankan. Hasilnya akan mengandungi GCC untuk menyusun kedua-dua fail. Di sini contoh ibu bapa1.c id dan sampel2.c id berbeza kerana mereka adalah ibu bapa dan anak.

Kesimpulannya

Dalam artikel ini, kami telah menggunakan garpu dan exec secara berasingan dan bersama untuk memahami penggunaan dan konsep dengan mudah. Saya harap tutorial ini mengandungi kandungan yang mencukupi yang akan membolehkan akses meningkatkan pengetahuan anda.

Cara Memasang dan Memainkan Doom di Linux
Pengenalan Doom Seri Doom berasal dari tahun 90an selepas pembebasan Doom yang asal. Ini adalah hit seketika dan sejak saat itu dan seterusnya siri pe...
Vulkan untuk Pengguna Linux
Dengan setiap kad grafik generasi baru, kami melihat pembangun permainan mendorong had kesetiaan grafik dan semakin dekat dengan fotorealisme. Tetapi ...
OpenTTD vs Simutrans
Membuat simulasi pengangkutan anda sendiri boleh menyeronokkan, santai dan sangat menarik. Itulah sebabnya anda perlu memastikan bahawa anda mencuba s...