diff options
Diffstat (limited to 'misc.c')
-rw-r--r-- | misc.c | 20 |
1 files changed, 19 insertions, 1 deletions
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: misc.c,v 1.106 2016/10/23 22:04:05 dtucker Exp $ */ | 1 | /* $OpenBSD: misc.c,v 1.107 2016/11/30 00:28:31 dtucker Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2000 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2000 Markus Friedl. All rights reserved. |
4 | * Copyright (c) 2005,2006 Damien Miller. All rights reserved. | 4 | * Copyright (c) 2005,2006 Damien Miller. All rights reserved. |
@@ -1251,3 +1251,21 @@ bind_permitted(int port, uid_t uid) | |||
1251 | return 0; | 1251 | return 0; |
1252 | return 1; | 1252 | return 1; |
1253 | } | 1253 | } |
1254 | |||
1255 | /* returns 1 if process is already daemonized, 0 otherwise */ | ||
1256 | int | ||
1257 | daemonized(void) | ||
1258 | { | ||
1259 | int fd; | ||
1260 | |||
1261 | if ((fd = open(_PATH_TTY, O_RDONLY | O_NOCTTY)) >= 0) { | ||
1262 | close(fd); | ||
1263 | return 0; /* have controlling terminal */ | ||
1264 | } | ||
1265 | if (getppid() != 1) | ||
1266 | return 0; /* parent is not init */ | ||
1267 | if (getsid(0) != getpid()) | ||
1268 | return 0; /* not session leader */ | ||
1269 | debug3("already daemonized"); | ||
1270 | return 1; | ||
1271 | } | ||