mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-07-17 16:47:50 +00:00
As discussed on the mailing list, current .py files formatting does not conform to the world standard, so we should better reformat it. For this the yapf tool is used. The command I used was yapf -i $(find -name *.py) Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
67 lines
1.4 KiB
Python
Executable file
67 lines
1.4 KiB
Python
Executable file
#!/usr/bin/env python2
|
|
import os, pty, sys, subprocess
|
|
import termios, fcntl, time
|
|
|
|
cr_bin = "../../../criu/criu"
|
|
|
|
os.chdir(os.getcwd())
|
|
|
|
|
|
def create_pty():
|
|
(fd1, fd2) = pty.openpty()
|
|
return (os.fdopen(fd1, "w+"), os.fdopen(fd2, "w+"))
|
|
|
|
|
|
if not os.access("work", os.X_OK):
|
|
os.mkdir("work", 0755)
|
|
|
|
open("running", "w").close()
|
|
m, s = create_pty()
|
|
p = os.pipe()
|
|
pr = os.fdopen(p[0], "r")
|
|
pw = os.fdopen(p[1], "w")
|
|
|
|
pid = os.fork()
|
|
if pid == 0:
|
|
m.close()
|
|
os.setsid()
|
|
os.dup2(s.fileno(), 0)
|
|
os.dup2(s.fileno(), 1)
|
|
os.dup2(s.fileno(), 2)
|
|
fcntl.ioctl(s.fileno(), termios.TIOCSCTTY, 1)
|
|
pr.close()
|
|
pw.close()
|
|
while True:
|
|
if not os.access("running", os.F_OK):
|
|
sys.exit(0)
|
|
time.sleep(1)
|
|
sys.exit(1)
|
|
|
|
pw.close()
|
|
pr.read(1)
|
|
|
|
cmd = [cr_bin, "dump", "-j", "-t", str(pid), "-D", "work", "-v"]
|
|
print("Run: %s" % " ".join(cmd))
|
|
ret = subprocess.Popen(cmd).wait()
|
|
if ret != 0:
|
|
sys.exit(1)
|
|
os.wait()
|
|
|
|
os.unlink("running")
|
|
m, s = create_pty()
|
|
cpid = os.fork()
|
|
if cpid == 0:
|
|
os.setsid()
|
|
fcntl.ioctl(m.fileno(), termios.TIOCSCTTY, 1)
|
|
cmd = [cr_bin, "restore", "-j", "-D", "work", "-v"]
|
|
print("Run: %s" % " ".join(cmd))
|
|
ret = subprocess.Popen([cr_bin, "restore", "-j", "-D", "work",
|
|
"-v"]).wait()
|
|
if ret != 0:
|
|
sys.exit(1)
|
|
sys.exit(0)
|
|
|
|
pid, status = os.wait()
|
|
if status != 0:
|
|
print("A child process exited with %d" % status)
|
|
sys.exit(1)
|