deluge/main.py | 52 ++++++++++++++++++++++++++++++++--------------------
1 files changed, 32 insertions(+), 20 deletions(-)
diff --git a/deluge/main.py b/deluge/main.py
index 12959a1..76686ae 100644
a
|
b
|
def start_daemon(): |
149 | 149 | parser.add_option("-u", "--ui-interface", dest="ui_interface", |
150 | 150 | help="Interface daemon will listen for UI connections on, this should be\ |
151 | 151 | an IP address", metavar="IFACE", action="store", type="str") |
152 | | parser.add_option("-d", "--do-not-daemonize", dest="donot", |
153 | | help="Do not daemonize", action="store_true", default=False) |
| 152 | if not (deluge.common.windows_check() or deluge.common.osx_check()): |
| 153 | parser.add_option("-d", "--do-not-daemonize", dest="donot", |
| 154 | help="Do not daemonize", action="store_true", default=False) |
154 | 155 | parser.add_option("-c", "--config", dest="config", |
155 | 156 | help="Set the config location", action="store", type="str") |
156 | 157 | parser.add_option("-l", "--logfile", dest="logfile", |
157 | 158 | help="Set the logfile location", action="store", type="str") |
158 | 159 | parser.add_option("-P", "--pidfile", dest="pidfile", |
159 | 160 | help="Use pidfile to store process id", action="store", type="str") |
| 161 | if not deluge.common.windows_check(): |
| 162 | parser.add_option("-U", "--user", dest="user", |
| 163 | help="User to switch to. Only use it when starting as root", action="store", type="str") |
| 164 | parser.add_option("-g", "--group", dest="group", |
| 165 | help="Group to switch to. Only use it when starting as root", action="store", type="str") |
160 | 166 | parser.add_option("-L", "--loglevel", dest="loglevel", |
161 | 167 | help="Set the log level: none, info, warning, error, critical, debug", action="store", type="str") |
162 | 168 | parser.add_option("-q", "--quiet", dest="quiet", |
… |
… |
def write_pidfile(): |
197 | 203 | open(options.pidfile, "wb").write("%d\n" % os.getpid()) |
198 | 204 | |
199 | 205 | # If the donot daemonize is set, then we just skip the forking |
200 | | if not options.donot: |
201 | | # Windows check, we log to the config folder by default |
202 | | if deluge.common.windows_check() or deluge.common.osx_check(): |
203 | | open_logfile() |
204 | | write_pidfile() |
205 | | else: |
206 | | if os.fork() == 0: |
207 | | os.setsid() |
208 | | if os.fork() == 0: |
209 | | open_logfile() |
210 | | write_pidfile() |
211 | | else: |
212 | | os._exit(0) |
213 | | else: |
214 | | os._exit(0) |
215 | | else: |
216 | | # Do not daemonize |
217 | | write_pidfile() |
| 206 | if not (deluge.common.windows_check() or deluge.common.osx_check() or options.donot): |
| 207 | if os.fork(): |
| 208 | # We've forked and this is now the parent process, so die! |
| 209 | os._exit(0) |
| 210 | os.setsid() |
| 211 | # Do second fork |
| 212 | if os.fork(): |
| 213 | os._exit(0) |
| 214 | |
| 215 | # Write pid file before chuid |
| 216 | write_pidfile() |
| 217 | |
| 218 | if options.user: |
| 219 | if not options.user.isdigit(): |
| 220 | import pwd |
| 221 | options.user = pwd.getpwnam(options.user)[2] |
| 222 | os.setuid(options.user) |
| 223 | if options.group: |
| 224 | if not options.group.isdigit(): |
| 225 | import grp |
| 226 | options.group = grp.getgrnam(options.group)[2] |
| 227 | os.setuid(options.group) |
| 228 | |
| 229 | open_logfile() |
218 | 230 | |
219 | 231 | # Setup the logger |
220 | 232 | try: |