GNU/Linux >> Tutoriels Linux >  >> Linux

Lors de l'utilisation de os.execlp, pourquoi `python` a besoin de `python` comme argv [0]

Lorsque python est exécuté, il crée sys.argv pour toi. Les valeurs de cette liste sont basées sur les arguments qui lui sont passés par le système d'exploitation, mais il s'arrête le sys.executable valeur de cette liste.

En d'autres termes, lorsque Python est invoqué, il définit sys.argv à tout mais c'est son propre exécutable .

Lorsque vous invoquez un nouveau exécutable via os.execlp() , vous devez toujours inclure Python car c'est l'exécutable que le système d'exploitation exécutera. Les deux premières valeurs de ce que vous a passez à os.execlp() sont toujours nécessaires, quoi que vous trouviez dans sys.argv plus tard.


Le deuxième python est un nom pour python, il peut s'agir de n'importe quelle chaîne, mais il doit être là.

Voir le deuxième paragraphe de http://docs.python.org/3/library/os.html?highlight=os.exec#process-management :

Les différentes fonctions exec* prennent une liste d'arguments pour le nouveau programme chargé dans le processus. Dans chaque cas, le premier de ces arguments est passé au nouveau programme sous son propre nom plutôt qu'en tant qu'argument qu'un utilisateur peut avoir tapé sur une ligne de commande. Pour le programmeur C, il s'agit de la valeur argv[0] transmise à la fonction main() d'un programme. Par exemple, os.execv('/bin/echo', ['foo', 'bar']) n'imprimera que bar sur la sortie standard ; foo semblera être ignoré.


Linux
  1. Lors de l'utilisation de Vlc, pourquoi l'économiseur d'écran continue-t-il de se réveiller ?

  2. Pourquoi une seule barre oblique inversée s'affiche-t-elle lors de l'utilisation de guillemets ?

  3. Pourquoi tout le monde utilise Docker ?

  4. Obtenez des deltas de souris en utilisant Python ! (sous Linux)

  5. emplacement du fichier temporaire lors de l'utilisation de tmpfile() en C

Comment gérer les packages Python à l'aide de PIP

Trouver les détails du système Linux à l'aide de Python

Comment redimensionner des images à l'aide de Python

Pourquoi Shotwell a-t-il inversé les positions X et Y lors de l'utilisation du recadrage ?

Pourquoi les couleurs Git n'apparaissent-elles pas lors de l'utilisation de Watch ?

Pourquoi ma construction d'Ubuntu est-elle lente lors du déplacement des fenêtres ?