Linux에서 프로그래밍 방식으로 백그라운드 프로세스 시작

Linux에서 프로그래밍 방식으로 백그라운드 프로세스 시작

&, nohup, tmux, + 등을 사용하지 않고 백그라운드에서 Linux 프로세스를 시작할 수 있습니까 disown?CTRL-Zbg

즉, 내가 찾고 있는 것은 다음과 같습니다.무료 콘솔프로그램 사용자가 아닌 프로그램 자체 내에서 콘솔과 분리된 Windows API입니다.

답변1

지금은 python3 소스가 없습니다.

의사 Python 코드는 다음과 같습니다.

token = fork()
if ( token == 0 ) :
    close(stdin) ; close(stdour) ; close(stderr)
else :
    print (token)
    return
## actual payload code start here

그런 다음 터미널을 닫고 SSH 연결을 하면 포크된 프로세스가 그대로 유지됩니다.


stdin 등을 닫지 않습니다. 터미널/ssh 세션이 종료되는 것을 방지합니다.

실용적인 점으로 저는 주로 디버그/정보 메시지를 인쇄하기 위해 표준 출력을 로그 파일로 다시 보냅니다.


내 python3 코드에서 발췌

    from os import fork, getuid, mkdir, path, unlink

    ## payload code initialisation

    pid=fork()
    if pid > 0 :
            print (f'démon pour {moi} forké avec le pid {pid}')
            pidtxt="/run/user/"+str(getuid())+"/"+moi+".pid"
            if path.isfile(pidtxt) : unlink(pidtxt)
            fpid=open(pidtxt,"w")
            print('{pid}'.format(pid=pid),file=fpid)
            fpid.close()
            exit()

    sys.stdout.close()
    sys.stdin.close()
    sys.stderr.close()
    flog = open("log/"+moi+".log","a",buffering=1)
    sys.stdout = flog
    sys.stderr = flog

    ## payload code run

관련 정보