mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-30 00:11:26 +00:00
NSProcessInfo: implement getting system uptime
Introduce the systemUptime property to NSProcessInfo, which can compute platform-independently what is the uptime of the system.
This commit is contained in:
parent
277ae581a6
commit
cbfa4d8cc9
3 changed files with 51 additions and 0 deletions
|
@ -1465,6 +1465,43 @@ static void determineOperatingSystem()
|
|||
return availMem;
|
||||
}
|
||||
|
||||
- (NSUInteger) systemUptime
|
||||
{
|
||||
NSUInteger uptime = 0;
|
||||
|
||||
#if defined(_WIN32)
|
||||
uptime = GetTickCount64() / 1000;
|
||||
#elif defined(HAVE_SYSCTLBYNAME)
|
||||
struct timeval tval;
|
||||
size_t len = sizeof(tval);
|
||||
|
||||
if (sysctlbyname("kern.boottime", &tval, &len, 0, 0) == 0)
|
||||
{
|
||||
uptime = tval.tv_sec;
|
||||
}
|
||||
#elif defined(HAVE_PROCFS)
|
||||
NSFileManager *fileManager = [NSFileManager defaultManager];
|
||||
|
||||
if ([fileManager fileExistsAtPath: @"/proc/uptime"])
|
||||
{
|
||||
NSString *uptimeContent = [NSString
|
||||
stringWithContentsOfFile: @"/proc/uptime"];
|
||||
NSString *uptimeString = [[uptimeContent
|
||||
componentsSeparatedByString:@" "] objectAtIndex:0];
|
||||
uptime = [uptimeString intValue];
|
||||
}
|
||||
#else
|
||||
#warning "no known way to determine uptime on this system"
|
||||
#endif
|
||||
|
||||
if (uptime == 0)
|
||||
{
|
||||
NSLog(@"Cannot determine uptime.");
|
||||
}
|
||||
|
||||
return uptime;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
void
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue