Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy
počítačové znalosti >> Systémy >> unix >> .

Čo je systémové volanie execlp?

Systémové volanie `execlp()` v Linuxe sa používa na spustenie programu a nahrádza aktuálny bežiaci proces novým programom. "lp" v "execlp()" znamená "zoznam ukazovateľov", ktorý odkazuje na argumenty odovzdané novému programu. Tu je podrobné vysvetlenie toho, ako `execlp()` funguje:

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.

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené