Peut-être que la question est obscure. L'exemple de code ci-dessous pour clarifier.

# file: sock.py

password = getpass.getpass("Password: ")


def run_socket_server():
    with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as s:
        # code...


if __name__ == "__main__":
    run_socket_server()

Exécutez le script

python sock.py
Password:   # enter password

Après cela, le processus ne fonctionne pas en arrière-plan, bloquant l'entrée utilisateur dans le terminal. La question est donc de savoir comment continuer à exécuter le processus python en arrière-plan pour permettre à l'utilisateur d'entrer dans le terminal?

1
vczm 14 mars 2019 à 14:38

2 réponses

Meilleure réponse

Cette solution suppose que vous souhaitez utiliser votre programme Python tel quel.

Comme votre programme demande un mot de passe, il doit d'abord s'exécuter au premier plan. L'exécuter comme

python sock.py &

L'arrêterait par un signal SIGTTIN lorsqu'il voudra lire le mot de passe. C'est pourquoi commencez-le au premier plan comme vous l'avez fait.

Si après avoir lu le mot de passe, il ne nécessite plus d'entrée de terminal, vous pouvez l'arrêter après avoir entré le mot de passe en appuyant sur CTRL+Z puis l'envoyer en arrière-plan en exécutant bg.

(Si, pour une raison quelconque, vous devez remettre le travail au premier plan, par exemple pour fournir une entrée, exécutez fg.)

3
Bodo 14 mars 2019 à 16:47

Vous souhaitez accéder au terminal pendant que le code python s'exécute en arrière-plan, vous devrez peut-être ajouter esperluette à la fin

python sock.py &
0
Gokul Kanneganti 14 mars 2019 à 14:30