*/
#include "orte_all.h"
+#include <sys/stat.h>
#ifndef CONFIG_ORTE_RT
//global variables
#endif
#ifdef CONFIG_ORTE_UNIX
+#ifdef HAVE_SYS_STAT_H
+ #include <sys/stat.h> /* For umask() */
+#endif
//Unix daemon support
-pthread_mutex_t mutex; //for wake up
-pthread_cond_t cond; //for wake up
-int cvalue;
-void sig_usr(int signo) {
- if ((signo==SIGTERM) || (signo==SIGINT)) {
- pthread_mutex_lock(&mutex);
- cvalue=1;
- pthread_cond_signal(&cond);
- pthread_mutex_unlock(&mutex);
- }
-}
void waitForEndingCommand(void) {
- pthread_mutex_init(&mutex, NULL);
- pthread_cond_init(&cond, NULL);
- cvalue=0;
- signal(SIGTERM,sig_usr);
- signal(SIGINT,sig_usr);
- pthread_mutex_lock(&mutex);
- while(cvalue==0)
- pthread_cond_wait(&cond,&mutex);
- pthread_mutex_unlock(&mutex);
- pthread_mutex_destroy(&mutex);
- pthread_cond_destroy(&cond);
+ sigset_t sigset;
+ int sig;
+ sigemptyset(&sigset);
+ sigaddset(&sigset, SIGINT);
+ sigaddset(&sigset, SIGTERM);
+ sigwait(&sigset, &sig);
}
static int daemonInit(void) {
pid_t pid;