Mercurial > hg > mercurial-crew-with-dirclash
comparison mercurial/commands.py @ 1741:9777298fed84
stop read end of pipe from staying open forever in child process.
author | Vadim Gelfer <vadim.gelfer@gmail.com> |
---|---|
date | Fri, 17 Feb 2006 16:32:07 -0800 |
parents | f95654385065 |
children | 1e5bb6c929cd |
comparison
equal
deleted
inserted
replaced
1740:f95654385065 | 1741:9777298fed84 |
---|---|
2020 optlist = "name templates style address port ipv6 accesslog errorlog" | 2020 optlist = "name templates style address port ipv6 accesslog errorlog" |
2021 for o in optlist.split(): | 2021 for o in optlist.split(): |
2022 if opts[o]: | 2022 if opts[o]: |
2023 ui.setconfig("web", o, opts[o]) | 2023 ui.setconfig("web", o, opts[o]) |
2024 | 2024 |
2025 if opts['daemon'] and not opts['daemon_pipefd']: | 2025 if opts['daemon'] and not opts['daemon_pipefds']: |
2026 rfd, wfd = os.pipe() | 2026 rfd, wfd = os.pipe() |
2027 args = sys.argv[:] | 2027 args = sys.argv[:] |
2028 args.append('--daemon-pipefd=' + str(wfd)) | 2028 args.append('--daemon-pipefds=%d,%d' % (rfd, wfd)) |
2029 pid = os.spawnvp(os.P_NOWAIT | getattr(os, 'P_DETACH', 0), | 2029 pid = os.spawnvp(os.P_NOWAIT | getattr(os, 'P_DETACH', 0), |
2030 args[0], args) | 2030 args[0], args) |
2031 os.close(wfd) | 2031 os.close(wfd) |
2032 os.read(rfd, 1) | 2032 os.read(rfd, 1) |
2033 os._exit(0) | 2033 os._exit(0) |
2054 if opts['pid_file']: | 2054 if opts['pid_file']: |
2055 fp = open(opts['pid_file'], 'w') | 2055 fp = open(opts['pid_file'], 'w') |
2056 fp.write(str(os.getpid())) | 2056 fp.write(str(os.getpid())) |
2057 fp.close() | 2057 fp.close() |
2058 | 2058 |
2059 if opts['daemon_pipefd']: | 2059 if opts['daemon_pipefds']: |
2060 wfd = int(opts['daemon_pipefd']) | 2060 rfd, wfd = [int(x) for x in opts['daemon_pipefds'].split(',')] |
2061 os.close(rfd) | |
2061 os.write(wfd, 'y') | 2062 os.write(wfd, 'y') |
2062 os.close(wfd) | 2063 os.close(wfd) |
2063 sys.stdout.flush() | 2064 sys.stdout.flush() |
2064 sys.stderr.flush() | 2065 sys.stderr.flush() |
2065 fd = os.open(util.nulldev, os.O_RDWR) | 2066 fd = os.open(util.nulldev, os.O_RDWR) |
2503 "root": (root, [], _('hg root')), | 2504 "root": (root, [], _('hg root')), |
2504 "^serve": | 2505 "^serve": |
2505 (serve, | 2506 (serve, |
2506 [('A', 'accesslog', '', _('name of access log file to write to')), | 2507 [('A', 'accesslog', '', _('name of access log file to write to')), |
2507 ('d', 'daemon', None, _('run server in background')), | 2508 ('d', 'daemon', None, _('run server in background')), |
2508 ('', 'daemon-pipefd', '', ''), | 2509 ('', 'daemon-pipefds', '', ''), |
2509 ('E', 'errorlog', '', _('name of error log file to write to')), | 2510 ('E', 'errorlog', '', _('name of error log file to write to')), |
2510 ('p', 'port', 0, _('port to use (default: 8000)')), | 2511 ('p', 'port', 0, _('port to use (default: 8000)')), |
2511 ('a', 'address', '', _('address to use')), | 2512 ('a', 'address', '', _('address to use')), |
2512 ('n', 'name', '', | 2513 ('n', 'name', '', |
2513 _('name to show in web pages (default: working dir)')), | 2514 _('name to show in web pages (default: working dir)')), |