int main(int argc, char *argv[]) { pid_t childPid; struct sigaction sa; setbuf(stdout, NULL); /* Make stdout unbuffered */ sigemptyset(&sa.sa_mask); sa.sa_flags = 0; sa.sa_handler = handler; if (sigaction(SIGHUP, &sa, NULL) == -1) errExit("sigaction"); childPid = fork(); if (childPid == -1) errExit("fork"); if (childPid == 0 && argc > 1) if (setpgid(0, 0) == -1) /* Move to new process group */ errExit("setpgid"); printf("PID=%ld; PPID=%ld; PGID=%ld; SID=%ld\n", (long) getpid(), (long) getppid(), (long) getpgrp(), (long) getsid(0)); alarm(60); /* An unhandled SIGALRM ensures this process will die if nothing else terminates it */ for(;;) { /* Wait for signals */ pause(); printf("%ld: caught SIGHUP\n", (long) getpid()); } }
/* fork and have child create new session */ int main(void) { pid_t pid; if ((pid = fork()) < 0) { err_sys("fork error"); } else if (pid == 0) { /* child */ if (setsid() != getpid()) err_sys("setsid error"); if (getpgrp() == getpid()) fprintf(stderr, "I am process group leader\n"); else fprintf(stderr, "I am not process group leader\n"); sleep(2); fprintf(stderr, "child: sid:%ld pid:%ld ppid:%ld\n", (long)getsid(0), (long)getpid(), (long)getppid()); } else { /* parent */ sleep(2); fprintf(stderr, "parent: sid:%ld pid:%ld ppid:%ld\n", (long)getsid(0), (long)getpid(), (long)getppid()); } return 0; }
void process(char *name, pid_t *cids, int cnum) { pid_t pid = getpid(); pid_t ppid = getppid(); pid_t pgrp = getpgrp(); pid_t sid = getsid(0); FILE *fp; fp = fopen(name, "w"); fprintf(fp, "pid/spid\tppid/sppid\tsid/ssid\n"); fclose(fp); while (1) { int ret = 0, i; fp = fopen(name, "a"); fprintf(fp, "%d/%d\t%d/%d\t%d/%d\n", getpid(), pid, getppid(), ppid, getsid(0), sid); fclose(fp); ret = check_credentials(pid, ppid, pgrp, sid); if (ret) { parse_credentials(ret, name, pid, ppid, pgrp, sid); } for (i = 0; i < cnum; i++) { if (kill(cids[i], 0) < 0) { printf("%s: no child #%d = %d\n", name, i, cids[i]); } } sleep(1); } }
int main(int argc,char *argv[]) { pid_t pid; if ( (pid = fork()) < 0) { perror("fork"); return -1; } if (pid == 0) { printf("child id : %d\n",getpid()); printf("parent id :%d\n",getppid()); printf("group id:%d\n",getpgid(0)); printf("session id:%d\n",getsid(0)); sleep(6); setsid(); printf("child id : %d\n",getpid()); printf("parent id :%d\n",getppid()); printf("group id:%d\n",getpgid(0)); printf("session id:%d\n",getsid(0)); sleep(10); return 0; } /** printf("parent session:%d\n",getsid(getpid())); printf("parent group:%d\n",getpgid(getpid())); wait(NULL); */ return 0; }
int main(int ac, char **av) { pid_t sid, mypid, pgid, gid; mypid = getpid(); sid = getsid(0); pgid = getpgid(0); gid = getpgrp(); printf("PID %d\n", mypid); printf("process group ID of session leader: %d\n", sid); printf("process group ID: %d\n", pgid); printf("process group ID: %d\n", gid); if (!fork()) { mypid = getpid(); sid = getsid(0); pgid = getpgid(0); gid = getpgrp(); printf("child PID %d\n", mypid); printf("process group ID of session leader: %d\n", sid); printf("process group ID: %d\n", pgid); printf("process group ID: %d\n", gid); _exit(0); } return 0; }
int main() { int i; printf("%d\n", getsid()); setsid(); printf("%d\n", getsid()); printf("hello world\n"); }
int main(int argc, char *argv[]) { int j; struct sigaction sa; if (argc < 2 || strcmp(argv[1], "--help") == 0) usageErr("%s {s|p} ...\n", argv[0]); setbuf(stdout, NULL); /* Make stdout unbuffered */ sigemptyset(&sa.sa_mask); sa.sa_flags = 0; sa.sa_handler = handler; if (sigaction(SIGHUP, &sa, NULL) == -1) errExit("sigaction"); if (sigaction(SIGCONT, &sa, NULL) == -1) errExit("sigaction"); printf("parent: PID=%ld, PPID=%ld, PGID=%ld, SID=%ld\n", (long) getpid(), (long) getppid(), (long) getpgrp(), (long) getsid(0)); /* Create one child for each command-line argument */ for (j = 1; j < argc; j++) { switch (fork()) { case -1: errExit("fork"); case 0: /* Child */ printf("child: PID=%ld, PPID=%ld, PGID=%ld, SID=%ld\n", (long) getpid(), (long) getppid(), (long) getpgrp(), (long) getsid(0)); if (argv[j][0] == 's') { /* Stop via signal */ printf("PID=%ld stopping\n", (long) getpid()); raise(SIGSTOP); } else { /* Wait for signal */ alarm(60); /* So we die if not SIGHUPed */ printf("PID=%ld pausing\n", (long) getpid()); pause(); } _exit(EXIT_SUCCESS); default: /* Parent carries on round loop */ break; } } /* Parent falls through to here after creating all children */ sleep(3); /* Give children a chance to start */ printf("parent exiting\n"); exit(EXIT_SUCCESS); /* And orphan them and their group */ }
static void do_test_setsid (bool test_setsid) { pid_t sid, child_sid; int res; /* Current session ID. */ sid = getsid(0); if (sid == (pid_t) -1) FAIL_EXIT1 ("getsid (0): %m"); posix_spawnattr_t attrp; /* posix_spawnattr_init should not fail (it basically memset the attribute). */ posix_spawnattr_init (&attrp); if (test_setsid) { res = posix_spawnattr_setflags (&attrp, POSIX_SPAWN_SETSID); if (res != 0) { errno = res; FAIL_EXIT1 ("posix_spawnattr_setflags: %m"); } } /* Program to run. */ char *args[2] = { (char *) "true", NULL }; pid_t child; res = posix_spawnp (&child, "true", NULL, &attrp, args, environ); /* posix_spawnattr_destroy is noop. */ posix_spawnattr_destroy (&attrp); if (res != 0) { errno = res; FAIL_EXIT1 ("posix_spawnp: %m"); } /* Child should have a different session ID than parent. */ child_sid = getsid (child); if (child_sid == (pid_t) -1) FAIL_EXIT1 ("getsid (%i): %m", child); if (test_setsid) { if (child_sid == sid) FAIL_EXIT1 ("child session ID matched parent one"); } else { if (child_sid != sid) FAIL_EXIT1 ("child session ID did not match parent one"); } }
int main(int argc, char* argv[]) { pid_t sid1; pid_t sid2; sid1 = getsid(0); sid2 = getsid(sid1); atomic_printf("getsid(0) session ID: %d\n", sid1); atomic_printf("getsid(getsid(0)) session ID: %d\n", sid2); if (sid1 == sid2) { atomic_puts("EXIT-SUCCESS"); } return 0; }
int main(int argc, char *argv[]) { pid_t pid; int fd; if ((pid = fork()) == -1) { perror("fork"); return -1; } else if (pid > 0) { int status; if (waitpid(pid, &status, 0) == -1) { perror("waitpid"); return -1; } if (WIFEXITED(status)) { if (WEXITSTATUS(status) != 0) { fprintf("child exit %d\n", WEXITSTATUS(status)); return -1; } } else if (WIFSIGNALED(status)) { fprintf("child termiated by signal %d\n", WTERMSIG(status)); return -1; } printf("parent: pid=%d, ppid=%d, pgrp=%d, sid=%d, tpgrp=%d\n", getpid(), getppid(), getpgrp(), getsid(0), tcgetpgrp(STDIN_FILENO)); return 0; } printf("child: pid=%d, ppid=%d, pgrp=%d, sid=%d, tpgrp=%d\n", getpid(), getppid(), getpgrp(), getsid(0), tcgetpgrp(STDIN_FILENO)); if ((fd = open("/dev/tty", O_RDONLY)) == -1) { perror("open controlling terminal failed before creating session"); } else { printf("open controlling terminal succeed before creating session\n"); close(fd); } setsid(); printf("child: pid=%d, ppid=%d, pgrp=%d, sid=%d, tpgrp=%d\n", getpid(), getppid(), getpgrp(), getsid(0), tcgetpgrp(STDIN_FILENO)); if ((fd = open("/dev/tty", O_RDONLY)) == -1) { perror("open controlling terminal failed after creating session"); } else { printf("open controlling terminal succeed after creating session\n"); close(fd); } return 0; }
int tty_setattr(int speed) { int rc; pid_t me=getpid(); struct termios tios; speed_t tspeed=tty_transpeed(speed); signal(SIGHUP,tty_sighup); signal(SIGPIPE,tty_sighup); if(getsid(me)==me) { #ifdef HAVE_TIOCSCTTY /* We are on BSD system, set this terminal as out control terminal */ ioctl(STDIN_FILENO,TIOCSCTTY); #endif tcsetpgrp(STDIN_FILENO,me); } rc=tcgetattr(STDIN_FILENO,&savetios); if(rc)return ME_ATTRS; memcpy(&tios,&savetios,sizeof(tios)); tios.c_cflag&=~(CSTOPB|PARENB|PARODD); tios.c_cflag|=CS8|CREAD|HUPCL|CLOCAL|HARDW_HS; tios.c_iflag=0; tios.c_oflag=0; tios.c_lflag=0; if(tspeed) { cfsetispeed(&tios,tspeed); cfsetospeed(&tios,tspeed); /* Speed is zero on answer, and we don't want to flush incoming EMSI_DAT */ tcflush(STDIN_FILENO,TCIFLUSH); } tios.c_cc[VTIME]=0; tios.c_cc[VMIN]=1; rc=tcsetattr(STDIN_FILENO,TCSANOW,&tios); return rc?ME_ATTRS:0; }
int ItsyOsInit (void) { pid_t sid; int i; itsy_session_info info; if (itsySessionFd < 0) { itsySessionFd = open ("/dev/session", 0); ErrorF("itsySessionFD %d\n", itsySessionFd); } (void) setsid (); sid = getsid (0); ErrorF ("Session ID %d PID %d\n", sid, getpid ()); info.sid = sid; strcpy (info.name, "X"); if (itsySessionFd >= 0) { i = ioctl (itsySessionFd, SESSION_SET_INFO, &info); if (i < 0) perror ("SESSION_SET_INFO"); } return 1; }
int main(int argc, char **argv) { //pid_t getpid(void); //pid_t getppid(void); fprintf(stdout, "PID: %d, PPID: %d\n", getpid(), getppid()); //uid_t getuid(void); //uid_t geteuid(void); fprintf(stdout, "Real UID: %d, Effective UID: %d\n", getuid(), geteuid()); //gid_t getgid(void); //gid_t getegid(void); fprintf(stdout, "Real GID: %d, Effective GID: %d\n", getgid(), getegid()); //pid_t getpgid(pid_t pid); fprintf(stdout, "PGID: %d\n", getpgid(0)); //pid_t getsid(pid_t pid); fprintf(stdout, "SID: %d\n", getsid(0)); // No method to get saved set-user-id value // No method to saved set-group-id value // Get list of supplementary group IDs //int getgroups(int size, gid_t list[]); //sleep(1000); return 0; }
char* _prisma_trytogettermname() { static char _prisma_termname[_PRISMA_TERMNAME_LENGTH]; #ifdef _PRISMA_LINUX char *tmp = getnameof(getppidof(getsid(getpid()))); if(tmp) { strncpy(_prisma_termname, tmp, _PRISMA_TERMNAME_LENGTH); if(!strncmp(_prisma_termname, "initdline", _PRISMA_TERMNAME_LENGTH) || !strncmp(_prisma_termname, "konsole", _PRISMA_TERMNAME_LENGTH)) return _prisma_termname; } #ifdef _GNU_SOURCE strncpy(_prisma_termname, secure_getenv("TERM"), _PRISMA_TERMNAME_LENGTH); #else strncpy(_prisma_termname, getenv("TERM"), _PRISMA_TERMNAME_LENGTH); #endif #elif defined _PRISMA_WINDOWS if(GetConsoleOriginalTitleA(&_prisma_termname[9], _PRISMA_TERMNAME_LENGTH-9)) { strncpy(_prisma_termname, "windows, ", 9); } else strncpy(_prisma_termname, "windows, unknown", _PRISMA_TERMNAME_LENGTH); #else strncpy(_prisma_termname, "unknown", _PRISMA_TERMNAME_LENGTH); #endif return _prisma_termname; }
static int check_sid (void) { pid_t my_sid, old_sid; const char *sid_str; int r; sid_str = getenv ("MC_SID"); if (!sid_str) return 0; old_sid = (pid_t) strtol (sid_str, NULL, 0); if (!old_sid) return 0; my_sid = getsid (0); if (my_sid == -1) return 0; /* The parent mc is in a different session, it's OK */ if (old_sid != my_sid) return 0; r = query_dialog (_("Warning"), _("GNU Midnight Commander is already\n" "running on this terminal.\n" "Subshell support will be disabled."), D_ERROR, 2, _("&OK"), _("&Quit")); if (r != 0) { return 2; } return 1; }
/* this function attaches our app to the specified tty */ bool open_tty(const char tty[]) { /* setsid disconnects us from any controlling terminals */ if(-1 == setsid() && getsid(0) != getpid()) fail_and_bail("Couldn't make ourselves a new session"); if(-1 == close(0)) fail_and_bail("Couldn't close stdin"); /* <-- that's zero */ /* open will return the lowest free file descriptor. * we just closed 0 (stdin) */ if(0 != open(tty,O_RDWR)) fail_and_bail("Didn't assign the tty to stdin"); dup2(0,1); /* stdout */ dup2(0,2); /* stderr */ /* i'm leaving this here, in case it's needed for portability, * but consider the reverse implication of O_NOCTTY const int steal_the_tty=1; if(-1 == ioctl(0,TIOCSCTTY, steal_the_tty)) fail_and_bail("Couldn't steal the tty"); fflush(NULL); */ return true; }
int main(void) { pid_t pid; int ret; if ((pid = fork()) < 0) { perror("fork error"); exit(1); } else if (pid == 0) // child { ret = setpgid(getpid(), 21933); assert(ret == 0); } else { sleep(2); // parent } while(1) { printf("pid %d process in the %d gp, %d session\n",getpid(), getpgrp(), getsid(0)); sleep(3); } return 0; }
/* * TODO: set the supplementary group vector to * the list of groups the user is in. * use setgroups(2) and get Groups entry from /proc<pid>/status. */ int armour_proc_set_param (armour_proc *p, pid_t pid) { p->pid = pid; errno = 0; armour_proc_set_param_environ (p, NULL); armour_proc_set_param_cmdline (p, NULL); armour_proc_set_param_cwd (p, NULL); armour_proc_set_param_root (p, NULL); armour_proc_set_param_io (p, NULL); armour_proc_set_param_ugid (p, NULL); armour_proc_set_param_comm (p, NULL); if (pid == getsid (pid)) { p->flags |= ARPROC_SETSID; } // TODO: remove. This is unnecessary once we add // syslog or whatever logging facility // plus doesnt need to be a per-process feature #ifdef DEBUG p->flags |= ARPROC_VERBOSE; #endif if (errno) { /* something went wrong */ armour_proc_free_param (p); return -1; } if (p->flags & ARPROC_VERBOSE) armour_proc_dump (p, NULL); return 0; }
int main(int argc, char **argv) { int fd, len, ret; sigset_t mask; int sig; if (getsid(0) != getpid()) return 1; sigemptyset(&mask); sigaddset(&mask, SIGINT); sigprocmask(SIG_BLOCK, &mask, NULL); write(1, "ok\n", 3); sigwait(&mask, &sig); /* usage: piggy file_name data_to_put_there */ if (argc < 3) return 1; fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0600); if (fd < 0) return 1; len = strlen(argv[2]); ret = write(fd, argv[2], len); close(fd); if (ret != len) { unlink(argv[1]); return 1; } return 0; }
void dmtcp::ProcessInfo::refresh() { _pid = getpid(); _ppid = getppid(); _gid = getpgid(0); _sid = getsid(0); _fgid = -1; dmtcp::string controllingTerm = jalib::Filesystem::GetControllingTerm(); if (!controllingTerm.empty()) { int tfd = _real_open(controllingTerm.c_str(), O_RDONLY, 0); if (tfd >= 0) { _fgid = tcgetpgrp(tfd); _real_close(tfd); } } if (_ppid == 1) { _isRootOfProcessTree = true; } _procname = jalib::Filesystem::GetProgramName(); _hostname = jalib::Filesystem::GetCurrentHostname(); _upid = UniquePid::ThisProcess(); _uppid = UniquePid::ParentProcess(); _noCoordinator = dmtcp_no_coordinator(); refreshChildTable(); refreshTidVector(); JTRACE("CHECK GROUP PID")(_gid)(_fgid)(_ppid)(_pid); }
int main(int argc, char **argv) { int ret=0; struct cmd_t *pcmd = NULL; int idx = 0; printf("sid: %d pgid: %d pid: %d ppid: %d \n", getsid(0), getpgid(0), getpid(), getppid()); if(argc >= 2) { if( strcmp(argv[1], "-h") == 0 ) wftool_usage(); else if( strcmp(argv[1], "help") == 0 ) print_usage(argv[2]); else{ for(idx=0; idx<ARRAY_NUM(cmd_list); idx++){ if(strcmp(argv[1], cmd_list[idx].cmd) == 0){ pcmd = &cmd_list[idx]; } } } if(pcmd) pcmd->cmd_call(argc, argv); else wftool_usage(); } else{ wftool_usage(); } return ret; }
int main(void){ pid_t pid; /*print the parent pid,pgid*/ printf("father's pid is %d,pgid is %d\n",getpid(),getpgid(0)); if((pid=fork())<0){/*fork child process*/ printf("fork error\n"); exit(1); }else if(pid==0){/*child*/ /*print the child pid,pgid*/ printf("before set, child's pid is %d,pgid is %d\n", getpid(), getpgid(0)); if(setsid() < 0){/*create new session*/ printf("setsid error\n"); exit(-1); } printf("sid is %d\n", getsid(0));/*see session id*/ /*check child has controll termination or not.*/ if(open("/dev/tty", O_RDWR) < 0){ printf("open error\n"); exit(1); } exit(0); } if(waitpid(pid,NULL,0) < 0){ err_sys("wait error"); } /*check parent has controll termination or not.*/ if(open("/dev/tty", O_RDWR) < 0){ printf("open error\n"); exit(1); }else{ printf("father open ok\n"); } exit(0); }
int main(int argc, char* argv[]){ struct sigaction sa; setbuf(stdout,NULL); sigemptyset(&sa.sa_mask); sa.sa_flags=0; sa.sa_handler=handler; if(sigaction(SIGHUP,&sa,NULL)==-1){ perror("sigaction"); } pid_t childPid; childPid=fork(); if(childPid==-1){ perror("fork"); } if(childPid==0&&argc>1){ if(setpgid(0,0)==-1){ perror("setpgid"); } } printf("PID=%d|PPID=%d|PGID=%d|SID=%d\n",getpid(),getppid(),getpgrp(),getsid(0)); alarm(3); for(;;){ pause(); printf("%d: caught SIGHUP\n",getpid()); } return 0; }
int main(){ pid_t f; pid_t pid, ppid, pgid, sid; struct rlimit rl; char buf[100]; f = fork(); if(f == -1) /*Error*/ perror("ERROR FORK.\n"); else if(f == 0) /*Hijo*/ { printf("Nueva sesión: %d\n", setsid()); chdir("/tmp"); pid = getpid(); ppid = getppid(); pgid = getpgid(pid); sid = getsid(pid); printf("Pid del proceso: %d\n", pid); printf("Pid del padre del proceso: %d\n", ppid); printf("Pid del grupo: %d\n", pgid); printf("Pid de sesión: %d\n", sid); printf("Máximo tamaño de archivo (bytes): %d\n", getrlimit(RLIMIT_FSIZE, &rl)); printf("Directorio de tamaño actual: %s\n", getcwd(buf, 100)); } else {/*Padre*/} return 0; }
int main (int argc, char * argv[]) { int i, status, lsockfd, csockfd; /* local/connection socket file descriptor */ struct sockaddr_in raddr; /* remote address object */ socklen_t raddr_len = sizeof (struct sockaddr_in); pthread_t connThread; /* thread identifier */ User_Settings * o_stngs; /* user suplied settings struct (stores user settings)*/ /* set global variables */ server = "simpleText"; version = 1.0f; /* allocate user suplied settings struct */ o_stngs = malloc(sizeof(User_Settings)); /* read configuration file */ read_conf_file (o_stngs); /* parse and set cli options */ parse_cli_opts (argc, (char **) &argv[0], o_stngs); /* make daemon and start logging */ status = init_daemon (server, o_stngs); if (status == 0) return EXIT_SUCCESS; /* parent returns success */ else if (status == 1) return EXIT_FAILURE; /* parent returns failure */ syslog (LOG_NOTICE, "[PID: %u, SID: %u] > %s started..", getpid (), getsid (getpid ()), server); /* Read Hosts File */ host_cnt = read_host_file (NULL, 1); for (i = 0; i < host_cnt; i++) read_host_file (&o_vhost[i], 0); /* start listening for TCP connections */ lsockfd = start_listen (o_stngs->port); free(o_stngs); /* loop through accepting and handling connections */ while (1) { /* accept connection or skip to next conection if accept fails */ csockfd = accept (lsockfd, (struct sockaddr *) &raddr, &raddr_len); if (csockfd == -1) /* if connection fails ignore it and continue */ continue; Connect_Args * o_args = malloc(sizeof(Connect_Args *)); o_args->socket = csockfd; strcpy (o_args->client_addr, inet_ntoa (raddr.sin_addr)); /* create thread to handle connection */ pthread_create(&connThread, NULL, (void *) &attent_connection, o_args); /* wait for one second before accepting next connection */ sleep (1); } }
/* On some systems (SGI IRIX 6), process exit sometimes kills all processes * in the process GROUP. This code attempts to fix that. * We DON'T do it if stdin (0) is connected to a terminal, because that * disconnects the process from the terminal. * ------------------------------------------------------------------------ */ void MPIE_CreateNewSession( void ) { #if defined(HAVE_SETSID) && defined(HAVE_ISATTY) && \ defined(USE_NEW_SESSION) && defined(HAVE_GETSID) #ifdef NEEDS_GETSID_DECL pid_t getsid(pid_t); #endif if (!isatty(0) && !isatty(1) && !isatty(2) && getsid(0) != getpid()) { pid_t rc; /* printf( "Creating a new session\n" ); */ /* printf( "Session id = %d and process id = %d\n", getsid(0), getpid() );*/ MPIE_SYSCALL(rc,setsid,()); if (rc < 0) { MPL_internal_sys_error_printf( "setsid", errno, "Could not create new process group\n" ); } }
void get_info(char* str_proc, pid_t pid) { printf("%s\n", str_proc); printf("PPID: %ld\n", (long)getppid()); printf(" PID: %ld\n", (long)getpid()); printf(" SID: %ld\n", (long)getsid(pid)); printf("PGID: %ld\n", (long)getpgid(pid)); }
/* * sys_init - System-dependent initialization. */ void sys_init() { int x; openlog("pppd", LOG_PID | LOG_NDELAY, LOG_PPP); setlogmask(LOG_UPTO(LOG_INFO)); if (debug) setlogmask(LOG_UPTO(LOG_DEBUG)); /* Get an internet socket for doing socket ioctl's on. */ if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) fatal("Couldn't create IP socket: %m"); if (default_device) tty_sid = getsid((pid_t)0); /* * Open the ppp device. */ pppfd = open("/dev/streams/ppp", O_RDWR | O_NONBLOCK, 0); if (pppfd < 0) fatal("Can't open /dev/streams/ppp: %m"); if (kdebugflag) { x = PPPDBG_LOG + PPPDBG_DRIVER; strioctl(pppfd, PPPIO_DEBUG, &x, sizeof(int), 0); } /* Assign a new PPA and get its unit number. */ if (strioctl(pppfd, PPPIO_NEWPPA, &ifunit, 0, sizeof(int)) < 0) fatal("Can't create new PPP interface: %m"); /* * Open the ppp device again and push the if_ppp module on it. */ iffd = open("/dev/streams/ppp", O_RDWR, 0); if (iffd < 0) fatal("Can't open /dev/streams/ppp (2): %m"); if (kdebugflag) { x = PPPDBG_LOG + PPPDBG_DRIVER; strioctl(iffd, PPPIO_DEBUG, &x, sizeof(int), 0); } if (strioctl(iffd, PPPIO_ATTACH, &ifunit, sizeof(int), 0) < 0) fatal("Couldn't attach ppp interface to device: %m"); if (ioctl(iffd, I_PUSH, "if_ppp") < 0) fatal("Can't push ppp interface module: %m"); if (kdebugflag) { x = PPPDBG_LOG + PPPDBG_IF; strioctl(iffd, PPPIO_DEBUG, &x, sizeof(int), 0); } if (strioctl(iffd, PPPIO_NEWPPA, &ifunit, sizeof(int), 0) < 0) fatal("Couldn't create ppp interface unit: %m"); x = PPP_IP; if (strioctl(iffd, PPPIO_BIND, &x, sizeof(int), 0) < 0) fatal("Couldn't bind ppp interface to IP SAP: %m"); n_pollfds = 0; }
int main(int argc, char** argv){ printf("Id: %i\n",getpid()); printf("Group id: %i\n",getpgid(0)); printf("Session id: %i\n",getsid(0)); struct rlimit rlim; getrlimit(RLIMIT_NOFILE,&rlim); printf("Number of files that can open the process: %i\n",rlim.rlim_cur); //soft limit, también hay un hard limit (rlimit_max) printf("Actual directory: %s\n",getcwd(NULL,0)); }
int main(int argc, char* argv[]) { pid_t sid = getsid(0); atomic_printf("getsid(0) session ID: %d\n", sid); test_assert(sid > 0); atomic_puts("EXIT-SUCCESS"); return 0; }