Revert "Remove daemonization" 27/177927/2
authorAdhavan M <adhavan.m@samsung.com>
Fri, 4 May 2018 10:35:36 +0000 (10:35 +0000)
committerManish Rathod <manish.r@samsung.com>
Fri, 4 May 2018 10:35:44 +0000 (10:35 +0000)
This reverts commit 94a707f6ecd68a9ef1c4e4ecbf519849fedad6b7.

Change-Id: I9544755f829daa11b8ab0d697fc3ebed3de6caa0

packaging/sdbd.service
packaging/sdbd_device.service
packaging/sdbd_device_tv.service
packaging/sdbd_emulator.service
packaging/sdbd_emulator_tv.service
packaging/sdbd_tcp.service
src/sdb.c

index eb49efe569adcefa2c87de42c4cda30d2fdbc1ac..8f65db94bd711f577a050854739ad2013ded545a 100644 (file)
@@ -4,7 +4,7 @@ Description=sdbd
 [Service]
 #If necessary, Put Environment variable settings in a file like below
 #ExecStartPre=/bin/bash -c "/bin/echo 'SDB_TRACE=all SDBD_LOG_PATH=/tmp' >> /tmp/.sdbdlog.conf"
-Type=simple
+Type=forking
 PIDFile=/tmp/.sdbd.pid
 RemainAfterExit=yes
 ExecStart=/usr/sbin/sdbd
index 080e0ed121188f715e471f4945a97070950dc406..38851a8111210181bea094a20c31d422529b7229 100644 (file)
@@ -6,7 +6,7 @@ After=tmp.mount
 [Service]
 User=sdk
 Group=sdk
-Type=simple
+Type=forking
 #location of SDBD log file
 #If necessary, Put Environment variable settings in a file like below
 #ExecStartPre=/bin/bash -c "/bin/echo 'SDB_TRACE=all SDBD_LOG_PATH=/tmp' >> /tmp/.sdbdlog.conf"
index 88d3a089d9b650038cdfc4af3a8d910595d83bbc..416c8189a5e56896fcd232d5d61d0a48bc92b935 100644 (file)
@@ -4,7 +4,7 @@ Requires=tizen-system-env.service
 After=tmp.mount
 
 [Service]
-Type=simple
+Type=forking
 #location of SDBD log file
 #Environment=SDBD_LOG_PATH=/tmp
 #If necessary, Put Environment variable settings in a file like below
index 9b87f404c94fb9b6c143937b5d8e2802eea13686..e6a4d3e0d9be8bd214b6d6a79c816d25346bcfc8 100644 (file)
@@ -7,7 +7,7 @@ After=tmp.mount dbus.service
 [Service]
 User=sdk
 Group=sdk
-Type=simple
+Type=forking
 Environment=DISPLAY=:0
 PIDFile=/tmp/.sdbd.pid
 RemainAfterExit=yes
index 3dc42e397d98987fb4d7285f3d007ca102344f05..634974c20cb2097fa47e52a09364db00500f0bac 100644 (file)
@@ -5,7 +5,7 @@ After=tmp.mount dbus.service
 #DefaultDependencies=false
 
 [Service]
-Type=simple
+Type=forking
 #location of SDBD log file
 #Environment=SDBD_LOG_PATH=/tmp
 #If necessary, Put Environment variable settings in a file like below
index 6871f29365bb6606753345e768db67c4ca6d93b3..7ff330d0ee4b4c02d44a5079fbb471cdc64ad991 100644 (file)
@@ -5,7 +5,7 @@ After=default.target
 [Service]
 User=sdk
 Group=sdk
-Type=simple
+Type=forking
 Environment=DISPLAY=:0
 #If necessary, Put Environment variable settings in a file like below
 #ExecStartPre=/bin/bash -c "/bin/echo 'SDB_TRACE=all SDBD_LOG_PATH=/tmp' >> /tmp/.sdbdlog.conf"
index fe77333aff1ce2967568052730a0773a4392d23e..cbe42b387b978fd6cbb8d16b4e06bf5f8fca7eaf 100644 (file)
--- a/src/sdb.c
+++ b/src/sdb.c
@@ -1225,6 +1225,43 @@ void start_device_log(void)
     sdb_close(fd);
 }
 
+int daemonize(void) {
+
+    // set file creation mask to 0
+    umask(0);
+
+    switch (fork()) {
+    case -1:
+        return -1;
+    case 0:
+        break;
+    default:
+        _exit(0);
+    }
+#ifdef SDB_PIDPATH
+    char* tmppath = NULL;
+    tmppath = realpath(SDB_PIDPATH, NULL);
+    if (tmppath == NULL && errno == ENOENT) {
+        FILE *f = fopen(SDB_PIDPATH, "w");
+
+        if (f != NULL) {
+            fprintf(f, "%d\n", getpid());
+            fclose(f);
+        }
+    } else {
+        D("sdbd: %s file is existed. It might not work properly.\n", SDB_PIDPATH);
+        free(tmppath);
+    }
+#endif
+    if (setsid() == -1)
+        return -1;
+
+    if (chdir("/") < 0)
+        D("sdbd: unable to change working directory to /\n");
+
+    return 0;
+}
+
 /* Constructs a local name of form tcp:port.
  * target_str points to the target string, it's content will be overwritten.
  * target_size is the capacity of the target string.
@@ -2265,6 +2302,9 @@ int main(int argc, char **argv)
         return EXIT_FAILURE;
     }
 
+    if (daemonize() < 0)
+        fatal("daemonize() failed: errno:%d", errno);
+
     D("Handling main()\n");
 
     //sdbd will never die on emulator!