I have a scenario where I need to find if a process is a
daemon process or not. This check needs to be done from within the process. I know there are no direct API's to do so. I have explored these options.
1. ctermid() - this can be unsuccessful as per the man pages
2. int devtty; if ((devtty = open ("/dev/tty", O_RDWR)) < 0) then it is a
daemon. Are there any other cases, where this may not be true ?
3. Since setsid() is used to detach from a terminal, perhaps getsid() can be used to check for process group leader and session leader.
4. Look if parent pid is 1 or not. Can a
daemon process have a ppid other than 1 ?
Are there more options ? I dont know if there is a best way to do this, but what would be the most appropriate way ?