Pengaturcaraan C

Panggilan Sistem Exec di C

Panggilan Sistem Exec di C
Keluarga exec mempunyai banyak fungsi di C. Fungsi C ini pada dasarnya digunakan untuk menjalankan perintah sistem dalam proses yang terpisah yang merupakan program utama dan mencetak outputnya.

Dalam artikel ini, saya akan membincangkan mengenai fungsi keluarga exec dan menunjukkan kepada anda bagaimana menggunakan setiap fungsi keluarga exec ini di C. Oleh itu, mari kita mulakan.

Fungsi Sistem C dalam Keluarga Exec:

Keluarga fungsi exec ditentukan dalam tajuk tidak terkawal.h. Jadi, anda mesti menggunakan tajuk ini pada program C di mana anda ingin menggunakan fungsi-fungsi ini.

Fungsi exec yang ada bersama dengan parameter fungsinya diberikan di bawah:

Mari kita lihat apa fungsi setiap fungsi ini dan bagaimana menggunakannya.

execl () Fungsi Sistem:

Dalam fungsi sistem execl () mengambil jalan dari fail binari yang boleh dilaksanakan (i.e. / bin / ls) sebagai hujah pertama dan kedua. Kemudian, hujah-hujah (i.e. -lh, / rumah) yang anda mahu sampaikan kepada yang boleh dilaksanakan diikuti oleh BULAN. Kemudian fungsi sistem execl () menjalankan perintah dan mencetak output. Sekiranya terdapat ralat, maka execl () mengembalikan -1. Jika tidak, tidak mengembalikan apa-apa.

Sintaks:

int execl (const char * path, const char * arg,…, NULL);

Contoh fungsi sistem execl () diberikan di bawah:

#sertakan
 
int utama (tidak sah)
char * binaryPath = "/ bin / ls";
char * arg1 = "-lh";
char * arg2 = "/ rumah";
 
execl (binaryPath, binaryPath, arg1, arg2, NULL);
 
pulangan 0;

Saya menjalankan ls -lh / rumah arahan menggunakan fungsi sistem execl (). Seperti yang anda lihat, hasil yang betul ditunjukkan.

execlp () Fungsi Sistem:

execl () tidak menggunakan PATH pemboleh ubah persekitaran. Oleh itu, jalan penuh fail yang boleh dilaksanakan diperlukan untuk menjalankannya dengan execl (). execlp () menggunakan pemboleh ubah persekitaran PATH. Jadi, jika fail atau perintah yang dapat dilaksanakan tersedia di PATH, maka perintah atau nama fail sudah cukup untuk menjalankannya, jalan penuh tidak diperlukan.

Sintaks:

int execlp (const char * file, const char * arg,…, NULL);

Kita boleh menulis semula contoh execl () menggunakan fungsi sistem execlp () seperti berikut:

#sertakan
 
int utama (tidak sah)
char * programName = "ls";
char * arg1 = "-lh";
char * arg2 = "/ rumah";
 
execlp (programName, programName, arg1, arg2, NULL);
 
pulangan 0;

Saya hanya memberikan nama arahan ls, bukan jalan penuh / bin / ls. Seperti yang anda lihat, saya mendapat output yang sama seperti sebelumnya.

execv () Fungsi Sistem:

Dalam fungsi execl (), parameter file yang dapat dieksekusi diteruskan ke fungsi sebagai argumen yang berbeza. Dengan execv (), anda dapat meneruskan semua parameter dalam larik NULL yang dihentikan berhujah. Elemen pertama array harus menjadi jalan bagi fail yang boleh dilaksanakan. Jika tidak, fungsi execv () berfungsi sama seperti fungsi execl ().

Sintaks:

int execv (const char * path, char * const argv []);

Kita boleh menulis semula contoh execl () seperti berikut:

#sertakan
 
int utama (tidak sah)
char * binaryPath = "/ bin / ls";
char * args [] = binaryPath, "-lh", "/ home", NULL;
 
execv (binaryPath, args);
 
pulangan 0;

Seperti yang anda lihat, saya mendapat output yang betul.

execvp () Fungsi Sistem:

Berfungsi sama seperti fungsi sistem execv (). Tetapi, pemboleh ubah persekitaran PATH digunakan. Jadi, jalan penuh fail yang boleh dilaksanakan tidak diperlukan sama seperti di execlp ().

Sintaks:

int execvp (const char * file, char * const argv []);

Kita boleh menulis semula contoh execv () seperti berikut:

#sertakan
 
int utama (tidak sah)
char * programName = "ls";
char * args [] = programName, "-lh", "/ home", NULL;
 
execvp (programName, args);
 
pulangan 0;

Seperti yang anda lihat, output yang betul ditunjukkan.

execle () Fungsi Sistem:

Berfungsi seperti execl () tetapi anda boleh memberikan pemboleh ubah persekitaran anda sendiri dengannya. Pemboleh ubah persekitaran diteruskan sebagai array envp. Unsur terakhir dari envp tatasusunan mestilah NULL. Semua elemen lain mengandungi pasangan nilai kunci sebagai rentetan.

Sintaks:

int execle (const char * path, const char * arg,…, NULL, char * const envp []);

Contoh fungsi sistem execle () diberikan di bawah:

#sertakan
 
int utama (tidak sah)
char * binaryPath = "/ bin / bash";
char * arg1 = "-c";
char * arg2 = "echo" Lawati $ HOSTNAME: $ PORT dari penyemak imbas anda."";
char * const env [] = "HOSTNAME = www.linuxhint.com "," PORT = 8080 ", NULL;
 
execle (binaryPath, binaryPath, arg1, arg2, NULL, env);
 
pulangan 0;

Saya lulus dua pemboleh ubah persekitaran NAMA HOST dan PELABUHAN ke fungsi execle (). Seperti yang anda lihat, saya dapat mengaksesnya dari yang boleh dilaksanakan / bin / bash.

execve () Fungsi Sistem:

Sama seperti execle () anda boleh memberikan pemboleh ubah persekitaran anda sendiri bersama dengan execve (). Anda juga boleh menyampaikan argumen sebagai tatasusunan seperti yang anda lakukan di execv ().

Sintaks:

int execve (const char * file, char * const argv [], char * const envp []);

Contoh execle () boleh ditulis semula seperti berikut:

#sertakan
 
int utama (tidak sah)
char * binaryPath = "/ bin / bash";
char * const args [] = binaryPath, "-c", "echo" Lawati $ HOSTNAME: $ PORT
dari penyemak imbas anda."", NULL;
char * const env [] = "HOSTNAME = www.linuxhint.com "," PORT = 8080 ", NULL;
 
execve (binaryPath, args, env);
 
pulangan 0;

Seperti yang anda lihat, kami mendapat output yang sama seperti pada contoh execle ().

Jadi, itulah cara anda menggunakan keluarga fungsi exec di C untuk pengaturcaraan sistem di Linux. Terima kasih kerana membaca artikel ini.

5 Produk Tetikus Komputer Ergonomik Teratas untuk Linux
Adakah penggunaan komputer yang berpanjangan menyebabkan rasa sakit di pergelangan tangan atau jari anda? Adakah anda mengalami sendi kaku dan selalu ...
Cara Mengubah Tetapan Tetikus dan Pad Sentuh Menggunakan Xinput di Linux
Sebilangan besar pengedaran Linux dihantar dengan perpustakaan "libinput" secara lalai untuk menangani peristiwa input pada sistem. Ia dapat memproses...
Buat semula butang tetikus anda secara berbeza untuk perisian yang berbeza dengan X-Mouse Button Control
Mungkin anda memerlukan alat yang dapat mengubah kawalan tetikus anda dengan setiap aplikasi yang anda gunakan. Sekiranya ini berlaku, anda boleh menc...