Hi! I have a programm with code like this (this is example, the real code is at http://fresh.t-systems-sfr.com/linux/src/.warix/logserial-0.4.2.tar.gz.html): #################### void shutdown(int sig) { switch (sig) { default: fprintf(stderr, "Got signal %d. Exit\n", sig); break; } exit(EXIT_SUCCESS); } int main(void) { chproc = fork(); if (chproc == -1) { perror("Unable to fork"); exit(EXIT_FAILURE); } if (chproc != 0) { fprintf(stderr, "Starting daemon...\n"); exit(EXIT_SUCCESS); } signal(SIGHUP, &shutdown); signal(SIGINT, &shutdown); signal(SIGQUIT, &shutdown); signal(SIGTERM, &shutdown); signal(SIGABRT, &shutdown); while (1) { sleep(1); } return 0; } #################### When I load a.out from terminal it run fine. I want this programm run at every boot so I place this command in /etc/rc.local or /usr/local/etc/rc.d/prog.sh. After boot it not run and in logs I see message "Got signal 1. Exit". Any ideas? Andris
andris@multicom.lv wrote: > I have a programm with code like this (this is example, the real code is > at > http://fresh.t-systems-sfr.com/linux/src/.warix/logserial-0.4.2.tar.gz.html): > [...] > When I load a.out from terminal it run fine. > I want this programm run at every boot so I place this command in > /etc/rc.local or /usr/local/etc/rc.d/prog.sh. > After boot it not run and in logs I see message "Got signal 1. Exit". A fork() is not sufficient to become a daemon. You also have to detach the process from the controlling terminal and other things. See Stevens APUE book for much more details. I'd recommend that you use the daemon(3) function. It does all of that for you. Please refer to the manpage. Regards Oliver -- Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 M?nchen Any opinions expressed in this message may be personal to the author and may not necessarily reflect the opinions of secnetix in any way. "That's what I love about GUIs: They make simple tasks easier, and complex tasks impossible." -- John William Chambless