import sys
import os
import time
# 1. first fork
if os.fork() > 0:
print("Kill the parent")
sys.exit(0)
# 2. new session
print("setsid")
os.setsid()
# 3. second fork
if os.fork() > 0:
print("Kill the parent")
sys.exit(0)
# 4. umask
print("umask 0")
os.umask(0)
print(f"Hello from child: {os.getpid()}")
# 5. change working directory
print("chdir /")
os.chdir("/")
print("GAG the child process!!!")
# 6. flush stdin/stdout/stderr
sys.stdin.flush()
sys.stdout.flush()
sys.stderr.flush()
# 7. copy filedescriptor of dev_null to sys.stdin
# dev_null is closed, but 0 stays open and points to os.devnull
with open(os.devnull, "rb", 0) as dev_null:
os.dup2(dev_null.fileno(), sys.stdin.fileno())
with open(os.devnull, "ab", 0) as dev_null:
os.dup2(dev_null.fileno(), sys.stdout.fileno())
os.dup2(dev_null.fileno(), sys.stderr.fileno())
time.sleep(20)
Comments
0 B
|👍
/👎