Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Prototyp:
``` c
int execlp(const char *subor, const char *arg0, ..., const char *argn, (char *) NULL);
```
Argumenty:
- `file`:Toto je cesta k spustiteľnému súboru alebo programu, ktorý chcete spustiť.
- `arg0`, `...,` `argn`:Toto sú ukazovatele na reťazce ukončené nulou, ktoré predstavujú argumenty príkazového riadku, ktoré sa majú odovzdať novému programu. `arg0` by mal byť vždy názov samotného programu.
- `(char *) NULL`:Toto je povinný nulový ukazovateľ na konci zoznamu argumentov. Slúži ako oddeľovač na označenie konca zoznamu argumentov.
Popis:
- `execlp()` je variáciou systémového volania `execl()`, ktorá používa zjednodušený, ale flexibilný spôsob odovzdávania argumentov novému programu. Automaticky vyhľadá spustiteľný súbor v adresároch určených premennou prostredia `PATH`.
- Keď sa zavolá `execlp()`, aktuálne spustený proces je nahradený novým programom špecifikovaným `súborom`. Argumenty `arg0`, `...,` `argn` sa odovzdajú ako argumenty príkazového riadka novému programu.
- `execlp()` sa nevracia do volajúceho procesu. Namiesto toho prenesie riadenie na nový program, ktorý začne vykonávať. Ak sa počas vykonávania `execlp()` vyskytnú nejaké chyby, napríklad sa nenašiel spustiteľný súbor alebo sú nedostatočné oprávnenia, volanie `execlp()` zlyhá a vráti hodnotu -1, pričom aktuálny proces zostane nedotknutý.
Príklad:
``` c
#include
#include
int main() {
// Spustite príkaz "ls -l".
execlp("ls", "ls", "-l", (char *) NULL);
// Tento riadok sa spustí iba vtedy, ak execlp() zlyhá
chyba("execlp() zlyhal");
návrat 0;
}
```
V tomto príklade systémové volanie `execlp()` spustí príkaz "ls -l", ktorý zobrazí zoznam súborov v aktuálnom adresári s podrobnými informáciami. Ak je `execlp()` úspešné, vykoná sa príkaz "ls -l" a riadenie sa prenesie do programu `ls`. Ak `execlp()` narazí na chybu, funkcia `perror()` vypíše chybové hlásenie do štandardného chybového prúdu ("stderr").
Dôležité body:
- `execlp()` je jednou z niekoľkých funkcií rodiny `exec()` v Linuxe, ktoré vykonávajú rovnakú úlohu pri spúšťaní nových programov, ale s rôznymi mechanizmami spracovania argumentov. Medzi ďalšie bežné funkcie `exec()` patria `execl()`, `execv()`, `execvp()` a `execve()`.
- `execlp()` hľadá spustiteľný súbor iba v adresároch špecifikovaných premennou prostredia `PATH`, takže je dôležité zabezpečiť, aby bol spustiteľný súbor prítomný v jednom z týchto adresárov.
- Argumenty `arg0`, `...,` `argn` musia byť reťazce ukončené nulou. Odovzdávanie reťazcov, ktoré nie sú ukončené nulou, alebo pokusy o odovzdanie väčšieho počtu argumentov, než dokáže funkcia spracovať, môže viesť k nedefinovanému správaniu.
- Systémové volanie `execlp()` sa používa v mnohých operačných systémoch podobných Unixu, nielen v Linuxe.