GNU/Linux >> Linux Esercitazione >  >> Linux

Quando si utilizza os.execlp, perché `python` ha bisogno di `python` come argv[0]

Quando python viene eseguito, crea sys.argv per te. I valori in quell'elenco sono basati sugli argomenti passatigli dal sistema operativo, ma si interrompe il sys.executable valore da quell'elenco.

In altre parole, quando Python viene invocato, imposta sys.argv a tutto ma è il proprio eseguibile .

Quando invochi un new eseguibile tramite os.execlp() , devi comunque includere Python in quanto è l'eseguibile che verrà eseguito dal sistema operativo. I primi due valori di ciò che passi a os.execlp() sono ancora obbligatori, qualunque cosa tu trovi in ​​sys.argv più tardi.


Il secondo python è un nome per python, può essere qualsiasi stringa, ma deve essere lì.

Vedi il secondo paragrafo di http://docs.python.org/3/library/os.html?highlight=os.exec#process-management:

Le varie funzioni exec* accettano un elenco di argomenti per il nuovo programma caricato nel processo. In ogni caso, il primo di questi argomenti viene passato al nuovo programma come proprio nome piuttosto che come argomento che un utente potrebbe aver digitato su una riga di comando. Per il programmatore C, questo è l'argv[0] passato alla main() di un programma. Ad esempio, os.execv('/bin/echo', ['foo', 'bar']) stamperà solo barra sullo standard output; foo sembrerà essere ignorato.


Linux
  1. Quando si utilizza Vlc, perché lo screen saver continua a svegliarsi?

  2. Perché tutti usano Docker?

  3. Come tracciare gli script Python usando trace.py

  4. Ottieni i delta del mouse usando Python! (su Linux)

  5. posizione del file temporaneo quando si utilizza tmpfile() in C

Come gestire i pacchetti Python utilizzando PIP

Trova i dettagli del sistema Linux usando Python

Come ridimensionare le immagini usando Python

Perché Shotwell ha le posizioni X e Y invertite quando si utilizza Crop?

Perché i colori Git non vengono visualizzati quando si utilizza Watch?

Perché il mio Ubuntu è in ritardo durante lo spostamento di Windows?