[Dev] HOWTO write a daemon

M. Mueller dev@trilug.org
Thu, 23 May 2002 19:13:23 -0400


--------------Boundary-00=_B67LJILHVVNP29FHWORQ
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

On Thursday 23 May 2002 06:40 pm, Peter Long reputedly wrote:

> Hi all,
>
> I have a console application that I want to turn into a daemon. Does anyone
> know where I can find documentation on how to do that.
>
> Thanks in advance.


Here's my daemon launcher.  It is more than a basic daemon launcher because I 
have N daemons that all talk to each other.  Furthermore, I don't want any 
daemons to start doing business until all the other daemons are ready.

-- 
Mike Mueller
www.ss7box.com
--------------Boundary-00=_B67LJILHVVNP29FHWORQ
Content-Type: text/x-c++;
  charset="iso-8859-1";
  name="dlaunch_main.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="dlaunch_main.c"

I2luY2x1ZGUJPHN5cy9zdGF0Lmg+CiNpbmNsdWRlCTxzeXMvbXNnLmg+CiNpbmNsdWRlCTxmY250
bC5oPgojaW5jbHVkZQk8c3lzbG9nLmg+CiNpbmNsdWRlCTxzdGRpby5oPgojaW5jbHVkZQk8dW5p
c3RkLmg+CiNpbmNsdWRlCTxlcnJuby5oPgojaW5jbHVkZQkiaXBjX21xLmgiCgojZGVmaW5lCQlN
QVhfREFFTU9OUwk1CiNkZWZpbmUJCURBRU1PTl9QQVRICSJ1c3IvbG9jYWwvc3M3dC9iaW4vIgoK
Y2hhcgkJKmVudl9pbml0W10gPSB7IlVTRVI9bXRwM2QiLCAiUEFUSD0vdG1wIiwgTlVMTH07CmNo
YXIJCSpkYWVtb25fbmFtZXNbXVtNQVhfREFFTU9OU10gPSB7CgkJCSJtdHAzX2QiLAoJCQkidGFs
aV9kIiwKLy8JCQkic2N0cF9kIiwKCQkJIm9hbV9kIiwKCQkJIm1yX2QiLAoJCQkicHNfZCIKCQl9
OwoKaW50CQkJc29ja2ZkOwpzdHJ1Y3Qgc29ja2FkZHJfaW4JbXlhZGRyLCBwZWVyYWRkcjsKdF9p
cGNfbXFidWYJCW1iOwpzb2NrbGVuX3QJCXNvY2thZGRybGVuOwoKdm9pZCBnZXRfYnVzeSAodW5z
aWduZWQgaW50IGRhZW1vbl9pZCkKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKiovCnsKaW50CXI7CgoJYnplcm8oJnBlZXJhZGRyLCBzaXplb2YocGVlcmFkZHIpKTsK
CXBlZXJhZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwoJcGVlcmFkZHIuc2luX3BvcnQgPSBodG9u
cyhkYWVtb25faWQpOwoJciA9IGluZXRfcHRvbihBRl9JTkVULCBJUENfQUREUl9TVFIsICZwZWVy
YWRkci5zaW5fYWRkci5zX2FkZHIpOwoJaWYgKHIgPT0gLTEpCgkJewoJCXN5c2xvZyAoTE9HX0lO
Rk8sICJGOmRhZW1vbl9sYXVuY2hlcjpnZXRfYnVzeTppbmV0X3B0b24gZmFpbGVkOiVzIiwKCQkJ
CXN0cmVycm9yKGVycm5vKSk7CgkJZXhpdCAoLTEpOwoJCX0KCgliemVybyAoJm1iLCBzaXplb2Yo
bWIpKTsKCW1iLm1oZHIuc19pZCA9IERMQVVOQ0hfSUQ7IC8vIHRoaXMgaXMgdGhlIGxldHRlciBz
ZW5kZXIKCW1iLm1oZHIubWNvZGUgPSBJUENfUFJPQ0VFRDsgCgltYi5taGRyLm1sZW4gPSBzaXpl
b2YodF9pcGNfbWJfaGRyKTsKCglyID0gc2VuZHRvIChzb2NrZmQsICZtYiwgbWIubWhkci5tbGVu
LCBOT0ZMQUdTLCAKCQkJJnBlZXJhZGRyLCBzaXplb2YgKHBlZXJhZGRyKSk7CglpZiAociA9PSAt
MSkKCQl7CgkJc3lzbG9nIChMT0dfSU5GTywgIkY6Z2V0IGJ1c3k6c2VuZHRvIGZhaWxlZDpjYXVz
ZSAlcyB0YXJnZXQ6ICVzIiwgCgkJCQlzdHJlcnJvcihlcnJubyksIGRhZW1vbl9pZCk7CgkJZXhp
dCAoLTEpOwoJCX0KfQoKaW50IGRhZW1vbl9pbml0KGNoYXIgKnBfZGFlbW9uX2ZuYW1lKQovKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KewpjaGFyCWRhZW1vbl9w
YXRobmFtZSBbMTI4XTsKCXBpZF90CXBpZDsKCglpZiAoIChwaWQgPSBmb3JrKCkpIDwgMCkKCQly
ZXR1cm4oLTEpOwoJZWxzZSBpZiAocGlkICE9IDApCgkJcmV0dXJuICgwKTsJLyogdGhlIHBhcmVu
dCBwcm9jZXNzIHJldHVybnMgZnJvbSB0aGlzIGZ1bmN0aW9uIGhlcmUgKi8KCi8vIHRoZSBjaGls
ZCBwcm9jZXNzIGNvbnRpbnVlcyBoZXJlCgoJc2V0c2lkKCk7CQkvKiBiZWNvbWUgc2Vzc2lvbiBs
ZWFkZXIgKi8KCWNoZGlyKCIvIik7CQkvKiBjaGFuZ2Ugd29ya2luZyBkaXJlY3RvcnkgKi8KCXVt
YXNrKDApOwkJLyogY2xlYXIgb3VyIGZpbGUgbW9kZSBjcmVhdGlvbiBtYXNrICovCgoJaWYgKChz
dHJsZW4gKHBfZGFlbW9uX2ZuYW1lKSArIHN0cmxlbiAoREFFTU9OX1BBVEgpKyAxKSA+IHNpemVv
ZiAoZGFlbW9uX3BhdGhuYW1lKSkKCQl7CgkJc3lzbG9nIChMT0dfSU5GTywgImRhZW1vbiBwYXRo
bmFtZSB0b28gbG9uZyIpOwoJCWV4aXQgKC0xKTsKCQl9CgovLyBleGVjIHRoZSBkYWVtb24gaW4g
dGhlIGNoaWxkIHByb2Nlc3MgCgoJZXhlY2wgCSgKCQlzdHJjYXQgKHN0cmNweSAoZGFlbW9uX3Bh
dGhuYW1lLERBRU1PTl9QQVRIKSwgcF9kYWVtb25fZm5hbWUpLCAKCQlwX2RhZW1vbl9mbmFtZSwK
CQkoY2hhciAqKSAwCgkJKTsKCQovLyBzaG91bGQgbmV2ZXIgcmVhY2ggdGhpcyBzdGF0ZW1lbnQK
CglleGl0KDApOwp9CgppbnQgZGFlbW9uX2NvbW1fcmVhZHkgKHZvaWQpCi8qKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwp7CnNzaXplX3QJYnc7CnVfbG9uZwlkYWVt
b25zX3JlYWR5OwoKCWRhZW1vbnNfcmVhZHkgPSAwOwoKCWZvciAoOzspCgkJewovLyBibG9ja2lu
ZyByZWFkOyB3YWl0IGZvciBhIGRhZW1vbiB0byByZXBvcnQgZm9yIGR1dHk7IGlmIHRoaXMgYmVj
b21lcwovLyBhIGJsb2NrLWZvcmV2ZXIgY29uZGl0aW9uLCB0aGVuIG9uZSBtdXN0IHJlc29ydCB0
byBraWxsaW5nIHByb2Nlc3MKLy8gdXNlICJwcyAtYXhqIiBhcyBzdXBlcnVzZXIgdG8gZmluZCB0
aGUgcHJvY2Vzc2VzIHRvIGJlIGtpbGxlZAoKCQlidyA9IHJlY3Zmcm9tIChzb2NrZmQsICZtYiwg
c2l6ZW9mIChtYiksIE5PRkxBR1MsIAoJCQkmcGVlcmFkZHIsICZzb2NrYWRkcmxlbik7CgkJaWYg
KGJ3ID09IC0xKQoJCQl7CgkJCXN5c2xvZyAoTE9HX0lORk8sICJGOmRhZW1vbl9jb21tX3JlYWR5
OnJlY3Zmcm9tIGZhaWxlZCIpOwoJCQlleGl0ICgtMSk7CgkJCX0KCi8vIHNob3cgd2hvJ3MgcmVh
ZHkgZm9yIGR1dHk7IGFkZCBhIHN0cmluZyB0ZXJtaW5hdGlvbgoKCQkvL21iLm1kYXRhW21iLm1o
ZHIubWxlbiAtIHNpemVvZih0X2lwY19tYl9oZHIpXSA9ICdcMCc7CgkJc3lzbG9nIChMT0dfSU5G
TywgIkk6bWIgY29udGVudHM6c19pZCAlZCBkYWVtb24gb24gZHV0eTogJXMiLCAKCQkJCW1iLm1o
ZHIuc19pZCwgCgkJCQkmbWIubWRhdGEpOwoJCQoJCWRhZW1vbnNfcmVhZHkgPSBkYWVtb25zX3Jl
YWR5IHwgbWIubWhkci5zX2lkOwoJCWlmIChkYWVtb25zX3JlYWR5ID09IEFMTF9EQUVNT05TX1JF
QURZKQoJCQl7CgkJCXN5c2xvZyAoTE9HX0lORk8sICJJOmRhZW1vbl9jb21tX3JlYWR5OmFsbCBk
YWVtb25zIHJlYWR5Iik7CgkJCWJyZWFrOwoJCQl9CgkJfSAvLyBlbmQgb2YgZm9yIGxvb3AKCi8v
IHRlbGwgdGhlIGRhZW1vbnMgdGhhdCBJUEMgbWF5IHByb2NlZWQKCglnZXRfYnVzeSAoTVRQM19Q
T1JUKTsKCWdldF9idXN5IChUQUxJX1BPUlQpOwovLwlnZXRfYnVzeSAoU0NUUF9JUENfUE9SVCk7
CglnZXRfYnVzeSAoT0FNX1BPUlQpOwoJZ2V0X2J1c3kgKE1SX1BPUlQpOwoJZ2V0X2J1c3kgKFBT
X1BPUlQpOwp9CgppbnQJY29uZmlndXJlX2RsKCkKLyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKiovCnsKCS8vZGxDb25mID0gbmV3IGNfY29uZlJlYWRlcigiZGwiKTsK
CS8vZGVsZXRlIGRsQ29uZgp9CgppbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQovKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KewppbnQJZDsKaW50CXI7
CgoJb3BlbmxvZyAoImRhZW1vbl9pbml0IiAsTE9HX1BJRCwgTE9HX1VTRVIpOwoJc3lzbG9nIChM
T0dfSU5GTyAsIkRhZW1vbiBsYXVuY2hlciBzdGFydGluZyIpOwoKLy8gcmVhZCBkYWVtb24gbGF1
bmNoZXIgY29uZiBmaWxlCgkKCWNvbmZpZ3VyZV9kbCgpOwoJCglzb2NrZmQgPSBzb2NrZXQoQUZf
SU5FVCwgU09DS19ER1JBTSwgMCk7CglpZiAoc29ja2ZkID09IC0xKQoJCXsKCQlzeXNsb2cgKExP
R19JTkZPLCAic29ja2V0IGZhaWxlZCIpOwoJCWV4aXQgKC0xKTsKCQl9CgovLyBjcmVhdGUgYW4g
SW50ZXJuZXQgUHJvdG9jb2wgYWRkcmVzcwoKCWJ6ZXJvKCZteWFkZHIsIHNpemVvZihteWFkZHIp
KTsKCW15YWRkci5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKCW15YWRkci5zaW5fcG9ydCA9IGh0b25z
KERMQVVOQ0hfUE9SVCk7CglyID0gaW5ldF9wdG9uKEFGX0lORVQsIElQQ19BRERSX1NUUiwgJm15
YWRkci5zaW5fYWRkci5zX2FkZHIpOwoJaWYgKHIgPT0gLTEpCgkJewoJCXN5c2xvZyAoTE9HX0lO
Rk8sICJJOmRhZW1vbl9sYXVuY2hlcjptYWluOmluZXRfcHRvbiBmYWlsZWQ6JXMiLAoJCQkJc3Ry
ZXJyb3IoZXJybm8pKTsKCQlleGl0ICgtMSk7CgkJfQoKCXIgPSBiaW5kIChzb2NrZmQsIChjb25z
dCBzdHJ1Y3Qgc29ja2FkZHIgKikgJm15YWRkciwgc2l6ZW9mKG15YWRkcikpOwoJaWYgKHIgPT0g
LTEpCgkJewoJCXN5c2xvZyAoTE9HX0lORk8sICJiaW5kIGZhaWxlZCIpOwoJCWV4aXQgKC0xKTsK
CQl9CgoJZm9yIChkID0gMDsgZCA8IE1BWF9EQUVNT05TOyBkKyspIAoJCXsKCQlpZiAoZGFlbW9u
X2luaXQgKGRhZW1vbl9uYW1lcyBbMF1bZF0pID09IC0xKQoJCQl7CgkJCXN5c2xvZyAoTE9HX0lO
Rk8sICJmb3JrIGZhaWxlZDsgZGFlbW9uIElEOiAlc1xuIiwgZGFlbW9uX25hbWVzW2RdKTsKCQkJ
cmV0dXJuICgtMSk7CgkJCX0KCQl9CgoJaWYgKGRhZW1vbl9jb21tX3JlYWR5ICgpID09IC0xKQoJ
CXsKCQl9CglyZXR1cm4gKDApOwp9Cg==

--------------Boundary-00=_B67LJILHVVNP29FHWORQ--