On Wed, Jul 02, 2003 at 02:36:26AM +0200, yg-boost-users@m.gmane.org wrote:
Pavol Droba
writes: | Hi, | | I have problem with boost.threads on linux ( under gcc ). | I have a multithreaded aplication using Boost.Thread. It works just fine. | | However, I want to make a daemon out of it. So I tried to fork() at the start | of the program and run all the relevant code ( including all threading ) in the | child process. But when I do so, first call to create_thread hangs the process.
I use something like this:
int main(int argc, char * argv[]) { pid_t pid = -1;
pid = fork();
if (pid > 0) { // Parent } else { if (pid == 0) { setsid(); close(0); close(1); close(2); chdir("/"); umask(0); } signal(SIGPIPE, SIG_IGN);
return child_main(); }
return EXIT_SUCCESS; }
(the code has been changed a bit, error handling removed etc.)
and in child_main threads are created.
It might be that you are just missing the setsid call?
-- Lgb
Thanks, I have already solved the problem. It was probably related to distro problem. Under my distribution of linux, pthread functionality is contained in some of the standard libraries, but it is broken. When I have linked explicitly with libphtread.a everything started to work. Regards, Pavol.