̾??
rfork
—
?ץ????????????????
Standard C Library (libc, -lc)
fork, vfork, rfork
?ϡ????????ץ?????????????????ͣ??????ˡ?Ǥ???
rfork
() ?ؤΰ???
flags ?ϡ???ư???Ƥ????ץ?????
(??) ?ΤɤΥ?????????????ץ????? (??) ??
???äƶ?ͭ?????뤫???ޤ??Ϥ??????Υǥե??????ͤ˽??????????뤫?????ޤ???
??????ˤϥ????ץ??ե????뵭?һҥơ??֥?
(?????ϡ???ͭ?????????硢
?ץ???????¾?Υץ??????ˤĤ??ƥե??????????Ĥ??뤳?Ȥ?
???Ƥ??ޤ?)
?????ӥ????ץ??ե????뤬?ޤޤ??ޤ???
flags ?????ϼ??ι??ܤ??????? (OR)
?Ǥ?:
RFPROC
- ???ꤵ???Ƥ??????硢???????ץ????????????????ޤ???
?????Ǥʤ????硢?ѹ??????ߤΥץ??????˱ƶ????ڤܤ??ޤ???
RFNOWAIT
- ???ꤵ???Ƥ??????硢?ҥץ??????Ͽƥץ?????????ʬΥ?????ޤ???
??λ???ˡ??ҥץ??????ϡ??ƥץ????????????륹?ơ????????Ĥ??ޤ?????
wait(2)
?Ȥ??Ƥ?????????
RFFDG
- ???ꤵ???Ƥ??????硢??ư¦?Υե????뵭?һҥơ??֥?
(intro(2)
??) ?????ԡ??????ޤ???
?????Ǥʤ????硢2 ?ĤΥץ??????? 1
?ĤΥơ??֥?????ͭ???ޤ???
RFCFDG
- ???ꤵ???Ƥ??????硢???????ץ??????Ͽ??????ե????뵭?һҥơ??֥??????ä?
???Ϥ??ޤ???
RFFDG
?Ȥϸߤ?????¾Ū?Ǥ???
RFMEM
- ???ꤵ???Ƥ??????硢
?̾?ϡ??ɥ??????Υڡ????ơ??֥???ľ?ܶ?ͭ???뤳?Ȥǡ?
?????ͥ??ϥ??ɥ쥹???????Τ?????Ū?˶?ͭ???ޤ???
?Ҥϡ????Τ褦????ˡ?ǡ??ƥץ?????????ͭ???Ƥ??뤹?٤ƤΥ????????Ȥ???
???줬???ʶ?ͭ??ǽ?Ǥ??뤫?ݤ??˴ط??ʤ????Ѿ?????ͭ???ޤ???
?????å??????????Ȥ?ʬ?䤵???ʤ?
(?ƤȻҤ?ξ????Ʊ???????å?????????????)
?Τǡ?RFMEM ?ե饰?????ꤷ??
rfork
() ?ϰ??̤ˡ?C
???????ޤ????????줫??ľ?ܸƤӽФ????ȤϤǤ??ޤ?????
??????????ǽ?ʥե饰??
RFPROC
?????Ǥ???
?????????????褷?????줿?????å????ǿ??????ץ???????
???餻?뤿?????????ؿ????????Ƥ??ޤ???
?ܤ?????
rfork_thread(3)
?Ȥ??Ƥ?????????
RFSIGSHARE
- ???ꤵ???Ƥ??????硢?????ͥ??ϡ??ƻҴ֤?
sigacts
??¤?Τ?????Ū?˶?ͭ???ޤ???
RFLINUXTHPN
- ???ꤵ???Ƥ??????硢?????ͥ??ϡ??ҤˤĤ??ƤΥ????åɽ?λ???ˡ?
SIGCHILD ?????????? SIGUSR1 ???֤??ޤ??? ???????????? Linux
????????ư???????魯?뤿???Ǥ???
??ͭ?ե????뵭?һҥơ??֥????Υե????뵭?һҤϡ?
????Ū???Ĥ??????뤫???ޤ??ϥơ??֥???
??ͭ???Ƥ??뤹?٤ƤΥץ?????????λ?????ޤdz??????ޤޤ??ݤ????ޤ???
RFPROC
?????ꤵ???Ƥ??????硢
?ƥץ??????????֤??????ͤϻҥץ??????Υץ?????
ID ?Ǥ??? ?ҥץ??????????֤??????ͤ? 0
?Ǥ??? RFPROC
???ʤ????硢?????ͤ? 0 ?Ǥ??? ?ץ????? ID
???ϰϤ? 1 ?????????????? (int)
?Ǥ???
ɬ?פǤ????С??ᤵ?줿?ץ???????????????ѤǤ????褦?ˤʤ??ޤ?
rfork
()
?????ƥॳ???????Ե????ޤ???
fork
()
?????ƥॳ?????ϡ?
rfork
(RFFDG | RFPROC)
?ؤθƤӽФ??Ȥ??Ƽ?????ǽ?Ǥ??????????ߴ????Τ?????
???Τ褦?ˤϼ????????Ƥ??ޤ?????
?????˴?λ???????硢
rfork
() ?ϡ??ҥץ????????? 0
???֤????ҥץ??????Υץ????? ID
???ƥץ??????? ?֤??ޤ???
?????Ǥʤ????硢?ҥץ??????Ϻ??????줺?ˡ???
-1 ???ƥץ????????֤??졢
???顼???????˥??????Х??ѿ?
errno ?????ꤵ???ޤ???
rfork
()
?????ƥॳ?????ϡ????ξ????˽????????Ԥ????ҥץ??????Ϻ????????ޤ???:
- [
EAGAIN
]
- ?¹????Υץ??????ι??????????ƥ??βݤ????¤?Ķ?ᤷ?Ƥ??ޤ??ޤ???
???¤?
sysctl(3)
MIB ?ѿ?
KERN_MAXPROC
?ˤ??äƻ??ꤵ???ޤ?
(?????ѥ桼?????????ơ????¤ϼºݤˤ?
???????? 10 ?ľ??ʤ??ʤ??ޤ?)??
- [
EAGAIN
]
- ?桼?????????ѥ桼???ǤϤʤ???1
?ͤΥ桼???ˤ????¹?????
?ץ??????ι??????????ƥ??βݤ??????¤?Ķ?ᤷ?Ƥ??ޤ??ޤ???
???¤ϡ?
sysctl(3)
MIB ?ѿ?
KERN_MAXPROCPERUID
?ˤ??äƻ??ꤵ???ޤ???
- [
EAGAIN
]
- ?桼?????????ѥ桼???ǤϤʤ???
resource ????
RLIMIT_NOFILE
???б????륽?եȥ?????????¤?Ķ?ᤷ?Ƥ??ޤ??ޤ?
(getrlimit(2)
??)??
- [
EINVAL
]
- RFFDG ?ե饰?? RFCFDG
?ե饰??ξ???????ꤵ???ޤ?????
- [
EINVAL
]
- ?????ޤǤ??????Ƥ??ʤ??ե饰?????ꤵ???ޤ?????
- [
ENOMEM
]
- ???????ץ??????Ѥ˽?ʬ?ʥ????å??֤??????ޤ?????
FreeBSD
?Ǥϡ??ͥ??ƥ??֤?
clone
()
?饤?֥??ꥳ??????̤???˼????????Ƥ??ޤ???
???ߤ? pthreads ?????? RFMEM ?????ꤷ??
rfork
() ?????Ѥ??Ƥ??ޤ????? linux
?????åɥ饤?֥????Υͥ??ƥ??֥ݡ??ȤǤ??롢
/usr/ports/devel/linuxthreads ?? RFMEM
?????Ѥ???ư??? clone
()
?ƤӽФ????ޤ??Ǥ??ޤ???
rfork_thread(3)
?ؿ??? clone
()
?????????Ȥ??????Ѥ??뤳?Ȥ??Ǥ??ޤ???
rfork
() ?ؿ??? Plan9
?ǤϤ??????о줷?ޤ?????