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:
- int execl (const char * path, const char * arg,…, NULL);
- int execlp (const char * file, const char * arg,…, NULL);
- int execv (const char * path, char * const argv []);
- int execvp (const char * file, char * const argv []);
- int execle (const char * path, const char * arg,…, NULL, char * const envp []);
- int execve (const char * file, char * const argv [], char * const envp []);
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:
#sertakanint 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:
#sertakanint 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:
#sertakanint 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:
#sertakanint 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:
#sertakanint 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:
#sertakanint 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.