2017-02-07 12 views
0

Windows의 코드가 P/Invoke를 사용하여 kernel32.dll에서 GetTickCount64() (으)로 전화를 걸었습니다. Mono가 우분투 서버 14에서 작동하지 않습니다. EntryPointNotFoundException이 나옵니다.우분투 서버에서 모노로 시스템 가동 시간을 얻으려면 어떻게해야합니까?

this approachPerformanceCounter입니다. Windows에서 작동하지만 카운터 이름이/System/System Up Time 인 Linux에서 사용하면 항상 0 배의 시간이 걸립니다. 그래서 그것은 또한 작동하지 않습니다.

Environment.Tickount은 Windows에서와 동일하게 작동하지만 47 일마다 오버플로되며 이로 인해 내 usecase에 혼란스러운 결과가 발생할 수 있으므로 64 비트 카운터를 선호합니다.

Ubuntu Server에서 Mono로 실행되는 C# 코드에서 시스템 가동 시간을 얻으려면 어떻게해야합니까?

+0

사용 네이티브 리눅스는 방법은 다음 http://stackoverflow.com/questions/1540627/what-api-do-i-call-to-get-the-system-uptime –

+0

@LexLi 어떻게 시작 할까 C# 코드에서 그렇게하고 있습니까? – sharptooth

+0

Google에서 수행하는 방법 Mono에서 PInvoke. Windows에서하는 것과 비교할 때 별 차이가 없습니다. –

답변

0

User Lex Li이 코드는 closely related question에 연결됩니다.

에서 대답을 얻는 답은 this one입니다. 이것은 C# 코드에 적합합니다. File.ReadAllText()을 사용하고 결과 문자열을 구문 분석 할 수 있습니다.

var uptimeText = File.ReadAllText("/proc/uptime"); 
// Now split the string to extract the first component, 
// parse it as double and use TimeSpan.FromSeconds()