Go to the documentation of this file.00001
00020 #ifndef COIL_PROCESS_H
00021 #define COIL_PROCESS_H
00022
00023 #include <stdlib.h>
00024 #include <unistd.h>
00025 #include <libgen.h>
00026 #include <signal.h>
00027 #include <sys/types.h>
00028 #include <sys/stat.h>
00029 #include <coil/stringutil.h>
00030
00031 namespace coil
00032 {
00033
00041 int launch_shell(std::string command)
00042 {
00043 signal(SIGCHLD, SIG_IGN);
00044
00045 pid_t pid;
00046 if((pid = fork()) < 0 )
00047 {
00048 return -1;
00049 }
00050
00051 if (pid == 0)
00052 {
00053
00054
00055
00056
00057
00058 setsid();
00059
00060
00061
00062
00063
00064
00065
00066
00067 coil::vstring vstr(::coil::split(command, " "));
00068 char* const * argv = ::coil::toArgv(vstr);
00069
00070 execvp(vstr.front().c_str(), argv);
00071
00072 return -1;
00073 }
00074 return 0;
00075 }
00076
00077 int daemon(int nochdir, int noclose)
00078 {
00079 return daemon(nochdir, noclose);
00080 }
00081
00082
00083 };
00084 #endif // COIL_PROCESS_H