# Process.daemon() returns -1 on failure ifndef HAVE\_DAEMON

**URL:** <https://www.ruby-forum.com/t/process-daemon-returns-1-on-failure-ifndef-have-daemon/185934>\
**Category:** Development\
**Created:** [March 29, 2010, 12:53pm UTC](https://www.ruby-forum.com/t/process-daemon-returns-1-on-failure-ifndef-have-daemon/185934 "2010-03-29T12:53:11Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Akinori\_MUSHA](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b782af/32.png) [@Akinori\_MUSHA](https://www.ruby-forum.com/u/Akinori_MUSHA)\
**Post date:** [March 29, 2010, 12:53pm UTC](https://www.ruby-forum.com/t/process-daemon-returns-1-on-failure-ifndef-have-daemon/185934/1 "2010-03-29T12:53:11Z")

</div>

ã€€Process.daemon() å¤±æ•—æ™‚ã®æŒ™å‹•ãŒã€ HAVE\_DAEMON å®šç¾©æ™‚ã¨éžå®šç¾©æ™‚  
ã¨ã§ç•°ãªã£ã¦ã„ã¾ã™ã€‚å¾Œè€…ã®å ´åˆã‚‚ã€ -1 ã‚’è¿”ã™ã®ã§ã¯ãªã errno ã«  
åŸºã¥ã„ãŸä¾‹å¤–ã‚’ä¸Šã’ã‚‹ã¹ãã ã¨æ€ã„ã¾ã™ãŒã©ã†ã§ã—ã‚‡ã†ã€‚

–  
Akinori MUSHA / [http://akinori.org/](http://akinori.org/)

Mon Mar 29 19:08:10 2010 Akinori MUSHA [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

- process.c (proc\_daemon): Process.daemon should raise an error on  
failure regardless of whether the implementation uses daemon(3)  
or not.

# Index: process.c

— process.c (revision 27080)  
+++ process.c (working copy)  
@@ -4531,8 +4531,8 @@ proc\_setmaxgroups(VALUE obj, VALUE val)  
#if defined(HAVE\_DAEMON) || defined(HAVE\_FORK)  
/\*

- call-seq:

- 
  - 

```
Process.daemon() => fixnum

```

- 
  - 

```
Process.daemon(nochdir=nil,noclose=nil) => fixnum

```

- 
  - 

```
Process.daemon() => 0

```

- 
  - 

```
Process.daemon(nochdir=nil,noclose=nil) => 0

```

  - 
  - Detach the process from controlling terminal and run in
  - the background as system daemon. Unless the argument  
@@ -4540,6 +4540,7 @@ proc\_setmaxgroups(VALUE obj, VALUE val)
  - working directory to the root (“/”). Unless the argument
  - noclose is true, daemon() will redirect standard input,
  - standard output and standard error to /dev/null.

- 
  - Return zero on success, or raise one of Errno::\*.  
\*/

static VALUE  
@@ -4561,7 +4562,7 @@ proc\_daemon(int argc, VALUE \*argv)  
#elif defined(HAVE\_FORK)  
switch (rb\_fork(0, 0, 0, Qnil)) {  
case -1:

- return INT2FIX(-1);

- rb\_sys\_fail(“daemon”);  
case 0:  
break;  
default:  
@@ -4573,7 +4574,7 @@ proc\_daemon(int argc, VALUE _argv)  
/_ must not be process-leader \*/  
switch (rb\_fork(0, 0, 0, Qnil)) {  
case -1:

- return INT2FIX(-1);

- rb\_sys\_fail(“daemon”);  
case 0:  
break;  
default:

---

<div class="post-metadata">

**Author:** ![Akinori\_MUSHA](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b782af/32.png) [@Akinori\_MUSHA](https://www.ruby-forum.com/u/Akinori_MUSHA)\
**Post date:** [March 29, 2010, 11:41pm UTC](https://www.ruby-forum.com/t/process-daemon-returns-1-on-failure-ifndef-have-daemon/185934/2 "2010-03-29T23:41:45Z")

</div>

2010e$BG/e(B3e$B7ne(B29e$BF|e(B19:52 Akinori MUSHA [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> e$B!!e(BProcess.daemon() e$B\<:GT;~$N5sF0$,!"e(B HAVE\_DAEMON e$BDj5A;~$HHsDj5A;~e(B  
> e$B$H$G0[$J$C$F$$$^$9!#8e\<T$N\>l9g$b!"e(B -1 e$B$rJV$9$N$G$O$J$/e(B errno e$B$Ke(B  
> e$B4p$E$$$?Nc30$r\>e$2$k$Y$-$@$H;W$$$^$9$,$I$&$G$7$g$&!#e(B

e$B\<:GT;~$N5sF0$r9g$o$;$k$H$$$&%3%s%;%W%H$O;?@.$G$9$,!"e(Brb\_fork()e$B$N$h$&$KJ#?t$Ne(B  
e$B%7%9%F%`%3!\<%k$r8F$V4X?t$KBP$7$Fe(Brb\_sys\_fail()e$B$r;H$&$N$O7y$+$b!#e(B  
e$BM}M3$Oe(Berrnoe$B$r8+$F$b\<:GT$7$F$$$k860x$r$^$C$?$/EA$($F$$$J$$$H9M$($k$+$i$G$9!#e(B

e$B0l$D\<ALd$J$N$G$9$,!"$3$NNc30$O%9%/%j%W%HB&$G$I$&$$$&=hM}$r4|BT$7$F$$$^$9$+!)e(B

---

<div class="post-metadata">

**Author:** ![Akinori\_MUSHA](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b782af/32.png) [@Akinori\_MUSHA](https://www.ruby-forum.com/u/Akinori_MUSHA)\
**Post date:** [March 30, 2010, 12:02am UTC](https://www.ruby-forum.com/t/process-daemon-returns-1-on-failure-ifndef-have-daemon/185934/3 "2010-03-30T00:02:50Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:40832] Process.daemon() returns -1 on failure  
ifndef HAVE\_DAEMON”  
on Mon, 29 Mar 2010 19:52:00 +0900, “Akinori MUSHA”  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|e$B!!e(BProcess.daemon() e$B\<:GT;~$N5sF0$,!"e(B HAVE\_DAEMON e$BDj5A;~$HHsDj5A;~e(B  
|e$B$H$G0[$J$C$F$$$^$9!#8e\<T$N\>l9g$b!"e(B -1 e$B$rJV$9$N$G$O$J$/e(B errno e$B$Ke(B  
|e$B4p$E$$$?Nc30$r\>e$2$k$Y$-$@$H;W$$$^$9$,$I$&$G$7$g$&!#e(B

e$BF10U$7$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![Akinori\_MUSHA](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b782af/32.png) [@Akinori\_MUSHA](https://www.ruby-forum.com/u/Akinori_MUSHA)\
**Post date:** [March 30, 2010, 1:54am UTC](https://www.ruby-forum.com/t/process-daemon-returns-1-on-failure-ifndef-have-daemon/185934/4 "2010-03-30T01:54:01Z")

</div>

> 2010e$BG/e(B3e$B7ne(B29e$BF|e(B19:52 Akinori MUSHA [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):
> 
> > e$B!!e(BProcess.daemon() e$B\<:GT;~$N5sF0$,!"e(B HAVE\_DAEMON e$BDj5A;~$HHsDj5A;~e(B  
> > e$B$H$G0[$J$C$F$$$^$9!#8e\<T$N\>l9g$b!"e(B -1 e$B$rJV$9$N$G$O$J$/e(B errno e$B$Ke(B  
> > e$B4p$E$$$?Nc30$r\>e$2$k$Y$-$@$H;W$$$^$9$,$I$&$G$7$g$&!#e(B
> 
> e$B\<:GT;~$N5sF0$r9g$o$;$k$H$$$&%3%s%;%W%H$O;?@.$G$9$,!"e(Brb\_fork()e$B$N$h$&$KJ#?t$Ne(B  
> e$B%7%9%F%`%3!\<%k$r8F$V4X?t$KBP$7$Fe(Brb\_sys\_fail()e$B$r;H$&$N$O7y$+$b!#e(B  
> e$BM}M3$Oe(Berrnoe$B$r8+$F$b\<:GT$7$F$$$k860x$r$^$C$?$/EA$($F$$$J$$$H9M$($k$+$i$G$9!#e(B

e$B\<+8J%l%9e(B  
e$B8+D\>$7$?$H$3$m!“e(Bprocess.ce$B$K;w$?$h$&$J=hM}$O$9$G$KBt;3$”$k$N$G!“$$$^$5$ie(B  
e$B$H$$$&46$N$”$k;XE&$G$7$?!#\<h$j\>C$7$^$9!#$9$$$^$;$s!#e(B

---

<div class="post-metadata">

**Author:** ![Akinori\_MUSHA](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b782af/32.png) [@Akinori\_MUSHA](https://www.ruby-forum.com/u/Akinori_MUSHA)\
**Post date:** [March 30, 2010, 4:44am UTC](https://www.ruby-forum.com/t/process-daemon-returns-1-on-failure-ifndef-have-daemon/185934/5 "2010-03-30T04:44:55Z")

</div>

At Tue, 30 Mar 2010 08:53:22 +0900,  
KOSAKI Motohiro wrote:

> è¦‹ç›´ã—ãŸã¨ã“ã‚ã€process.cã«ä¼¼ãŸã‚ˆã†ãªå‡¦ç†ã¯ã™ã§ã«æ²¢å±±ã‚ã‚‹ã®ã§ã€ã„ã¾ã•ã‚‰  
> ã¨ã„ã†æ„Ÿã®ã‚ã‚‹æŒ‡æ‘˜ã§ã—ãŸã€‚å–ã‚Šæ¶ˆã—ã¾ã™ã€‚ã™ã„ã¾ã›ã‚“ã€‚

ã€€ãã†ãªã‚“ã§ã™ã€‚rb\_f\_forkï¼ˆProcess.forkï¼‰ãŒãã†ãªã£ã¦ã„ã¾ã™ã€‚

ã€€ã‚¨ãƒŸãƒ¥ãƒ¬ãƒ¼ãƒˆã—ã¦ã„ã‚‹ \*BSD ç³»ã® daemon(3) ã‚‚ã€å¤±æ•—æ™‚ã¯ä¸€å¾‹ã«  
-1 ã‚’è¿”ã™ã®ã§ errno ã‚’è¦‹ã‚ˆã€ã«æ­¢ã¾ã£ã¦ã„ã¾ã™ã€‚

> > ä¸€ã¤è³ªå•ãªã®ã§ã™ãŒã€ã“ã®ä¾‹å¤–ã¯ã‚¹ã‚¯ãƒªãƒ—ãƒˆå´ã§ã©ã†ã„ã†å‡¦ç†ã‚’æœŸå¾…ã—ã¦ã„ã¾ã™ã‹ï¼Ÿ

ã€€ã¡ã‚‡ã†ã©æ˜¨æ—¥ã€Twitterã§ popen(3) ã¯æ§˜ã€…ãªç†ç”±ã§å¤±æ•—ã™ã‚‹ã®ã«  
ç›¸äº’ã«åŒºåˆ¥ã§ããªã„ã‚¨ãƒ©ãƒ¼ã®çµ„ãŒè¤‡æ•°ã‚ã‚‹ã¨ã„ã†è©±ã‚’ã—ã¦ã„ã¾ã—ãŸã€‚  
æœ¬ä»¶ã¯ã€æ°—ã«ãªã£ã¦ io.c ã‚„ process.c ã§ rb\_sys\_fail() ã—ã¦ã„ã‚‹  
ç®‡æ‰€ã‚’èª¿ã¹ã¦ã„ã¦ãŸã¾ãŸã¾è¦‹ã¤ã‘ãŸã‚‚ã®ã§ã™ã€‚

ã€€ä»Šã®ã¨ã“ã‚ã¯ã€ Errno::\* ã«ã¤ã„ã¦ã¯ errno ã‚’ç™ºç”Ÿã—ãŸã‚·ã‚¹ãƒ†ãƒ  
ã‚³ãƒ¼ãƒ«ãŒç‰¹å®šã§ãã¦ãªãŠã‹ã¤å„å€¤ã«ã¤ã„ã¦ã®å¯¾å‡¦æ³•ãŒï¼ˆPOSIX çš„ã«ï¼‰  
æ˜Žç¢ºãªã‚‚ã®ã‚’é™¤ã„ã¦ã¯ã€ãã®ã¾ã¾ãƒ¦ãƒ¼ã‚¶ã«ä¼ãˆã¦ã‚ãã‚‰ã‚ã‚‹ã‹ä»£æ›¿  
æ‰‹æ®µã‚’å–ã‚‹ãã‚‰ã„ã§ã™ã­ã€‚

ã€€Rubyï¼ˆCRubyï¼‰ã¨ã—ã¦ã¯ã€POSIX ã‚„ãƒ¡ã‚¸ãƒ£ãƒ¼ãª libc å®Ÿè£…ç­‰ã§ã‚ˆã‚Š  
é©åˆ‡ãªã‚¨ãƒ©ãƒ¼å‡¦ç†ãŒå¯èƒ½ãªæ–°ã—ã„APIãŒå‡ºã¦ããŸã‚‰å¯¾å¿œã‚’è€ƒãˆã‚‹ã€ã¨  
ã„ã†ã®ãŒå¦¥å½“ãªã¨ã“ã‚ã‹ã‚‚ã€‚

---

<div class="post-metadata">

**Author:** ![Akinori\_MUSHA](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b782af/32.png) [@Akinori\_MUSHA](https://www.ruby-forum.com/u/Akinori_MUSHA)\
**Post date:** [March 30, 2010, 1:58pm UTC](https://www.ruby-forum.com/t/process-daemon-returns-1-on-failure-ifndef-have-daemon/185934/6 "2010-03-30T13:58:28Z")

</div>

> e$B\<jCJ$r\<h$k$/$i$$$G$9$M!#e(B
> 
> Rubye$B!Je(BCRubye$B!K$H$7$F$O!“e(BPOSIX e$B$d%a%8%c!\<$Je(B libc e$B\<BAuEy$G$h$je(B  
> e$BE,@Z$J%(%i!\<=hM}$,2DG=$J?7$7$$e(BAPIe$B$,=P$F$-$?$iBP1~$r9M$($k!”$He(B  
> e$B$$$&$N$,BEEv$J$H$3$m$+$b!#e(B

e$B$J$k$[$I!#e(B  
e$B\<+J,$O%f!\<%6%i%s%I$NG:$\_$rJY6/$7$?$/$F!"$3$Ne(BMLe$B$r9XFI$5$;$F$b$i$C$F$$$kLL$,$"$j$^$9$N$Ge(B  
e$B$3$&$$$&OC$OHs\>o$K6=L#?\<$$$G$9!#e(B
