Solución:
Estas tres variantes pueden resolver el problema:
cmd = '/usr/bin/vi'
os.execv(cmd, (' ',))
os.execv(cmd, [' '])
os.execl(cmd, '')
Normalmente, el primer parámetro de una lista de argumentos (sys.argv) es el comando que se ha utilizado para invocar la aplicación. Entonces es mejor usar uno de esos:
cmd = '/usr/bin/vi'
os.execv(cmd, (cmd,))
os.execv(cmd, [cmd])
os.execl(cmd, cmd)
os.exec * documentación en python.org
Bien, después de preguntar en IRC, señalaron por qué funciona de esta manera.
El primer argumento (arg0) es normalmente el nombre de archivo de lo que está ejecutando (sys.argv[0] por ejemplo), por lo que el primer argumento siempre debe ser el nombre del archivo.
Esto explica por qué los argumentos no son opcionales, en IRC dijeron que arg0 es lo que la aplicación pensará que es su nombre.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)