Exemplo n.º 1
0
int su_main(int argc, char *argv[]) {
    int ppid = getppid();
	if ((geteuid() != AID_ROOT && getuid() != AID_ROOT) ||
			(get_api_version() >= 18 && getuid() == AID_SHELL) ||
			get_api_version() >= 19) {
		// attempt to connect to daemon...
		LOGD("starting daemon client %d %d", getuid(), geteuid());
		return connect_daemon(argc, argv, ppid);
	} else {
		return su_main_nodaemon(argc, argv);
	}

}
Exemplo n.º 2
0
static int run_daemon_child(int infd, int outfd, int errfd, int argc, char** argv) {
    if (-1 == dup2(outfd, STDOUT_FILENO)) {
        PLOGE("dup2 child outfd");
        exit(-1);
    }

    if (-1 == dup2(errfd, STDERR_FILENO)) {
        PLOGE("dup2 child errfd");
        exit(-1);
    }

    if (-1 == dup2(infd, STDIN_FILENO)) {
        PLOGE("dup2 child infd");
        exit(-1);
    }

    close(infd);
    close(outfd);
    close(errfd);

    return su_main_nodaemon(argc, argv);
}