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); }
void dmtcp::ProcessInfo::refresh() { _pid = getpid(); _ppid = getppid(); _gid = getpgid(0); _sid = getsid(0); _fgid = -1; // Try to open the controlling terminal int tfd = _real_open("/dev/tty", O_RDWR); if (tfd != -1) { _fgid = tcgetpgrp(tfd); _real_close(tfd); } if (_ppid == 1) { _isRootOfProcessTree = true; _uppid = UniquePid(); } else { _uppid = UniquePid::ParentProcess(); } _procname = jalib::Filesystem::GetProgramName(); _hostname = jalib::Filesystem::GetCurrentHostname(); _upid = UniquePid::ThisProcess(); _noCoordinator = dmtcp_no_coordinator(); char buf[PATH_MAX]; JASSERT(getcwd(buf, sizeof buf) != NULL); _ckptCWD = buf; _sessionIds.clear(); refreshChildTable(); JTRACE("CHECK GROUP PID")(_gid)(_fgid)(_ppid)(_pid); }