GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum benötigt `python` bei Verwendung von os.execlp `python` als argv[0]

Wenn Python ausgeführt wird, erstellt es sys.argv für dich. Die Werte in dieser Liste sind basiert auf den vom Betriebssystem übergebenen Argumenten, aber lässt es weg die sys.executable Wert aus dieser Liste.

Mit anderen Worten, wenn Python aufgerufen wird, setzt es sys.argv zu allem aber es ist eine eigene ausführbare Datei .

Wenn Sie eine neue ausführbar über os.execlp() , müssen Sie noch Python darin einschließen, da dies die ausführbare Datei ist, die das Betriebssystem ausführt. Die ersten beiden Werte von was Sie a übergeben an os.execlp() sind immer noch erforderlich, was auch immer Sie in sys.argv finden später.


Die zweite Python ist ein Name für Python, es kann eine beliebige Zeichenkette sein, aber sie muss vorhanden sein.

Siehe zweiter Absatz von http://docs.python.org/3/library/os.html?highlight=os.exec#process-management:

Die verschiedenen exec*-Funktionen nehmen eine Liste von Argumenten für das neue Programm, das in den Prozess geladen wird. In jedem Fall wird das erste dieser Argumente als eigener Name an das neue Programm übergeben und nicht als Argument, das ein Benutzer möglicherweise in einer Befehlszeile eingegeben hat. Für den C-Programmierer ist dies das argv[0], das an main() eines Programms übergeben wird. Beispielsweise wird os.execv('/bin/echo', ['foo', 'bar']) nur bar auf der Standardausgabe ausgeben; foo scheint ignoriert zu werden.


Linux
  1. Warum wacht der Bildschirmschoner bei der Verwendung von Vlc immer wieder auf?

  2. Warum verwenden alle Docker?

  3. Erhalten Sie Mausdeltas mit Python! (unter Linux)

  4. temporärer Dateispeicherort bei Verwendung von tmpfile() in C

  5. Befehl bei Verwendung von sudo nicht gefunden

So verwalten Sie Python-Pakete mit PIP

Finden Sie Linux-Systemdetails mit Python

So ändern Sie die Größe von Bildern mit Python

Warum sind bei Shotwell die X- und Y-Positionen umgekehrt, wenn Crop verwendet wird?

Warum erscheinen keine Git-Farben bei der Verwendung von Watch?

Warum verzögert sich mein Ubuntu-Build beim Verschieben von Fenstern?