GNU/Linux >> Znalost Linux >  >> Linux

Při použití os.execlp, proč `python` potřebuje `python` jako argv[0]

Když je python spuštěn, vytvoří sys.argv pro tebe. Hodnoty v tomto seznamu jsou založené na argumentech, které mu předá operační systém, ale nevypne sys.executable hodnotu z tohoto seznamu.

Jinými slovy, když je vyvolán Python, nastaví sys.argv ke všemu ale je to vlastní spustitelný soubor .

Když vyvoláte nové spustitelný přes os.execlp() , stále do toho musíte zahrnout Python, protože to je spustitelný soubor, který OS poběží. První dvě hodnoty toho, co předáváte os.execlp() jsou stále vyžadovány, ať už najdete v sys.argv později.


Druhá python je název pro python, může to být jakýkoli řetězec, ale musí tam být.

Viz druhý odstavec z http://docs.python.org/3/library/os.html?highlight=os.exec#process-management:

Různé funkce exec* přebírají seznam argumentů pro nový program načtený do procesu. V každém případě je první z těchto argumentů předán novému programu jako jeho vlastní název, nikoli jako argument, který uživatel zadal na příkazovém řádku. Pro programátora v jazyce C je to argv[0] předávané hlavní() programu. Například os.execv('/bin/echo', ['foo', 'bar']) vytiskne pruh pouze na standardní výstup; foo se bude zdát ignorováno.


Linux
  1. Proč se při používání Vlc spořič obrazovky neustále probouzí?

  2. Jak trasovat Python skripty pomocí trace.py

  3. dočasné umístění souboru při použití tmpfile() v C

  1. Proč se při použití uvozovek zobrazuje jedno zpětné lomítko?

  2. Proč všichni používají Docker?

  3. Získejte delty myši pomocí Pythonu! (v Linuxu)

  1. Proč se moje $LD_LIBRARY_PATH při použití obrazovky s bash odstaví?

  2. příkaz nebyl nalezen při použití sudo

  3. Použití / při použití cd