2016-11-15 2 views
1

OS "Operation nicht erlaubt": UbuntuDer Versuch, in C++ Anwendung in Ubuntu 14.04 Echtzeituhr zu verändern, immer

Version: 14,04

Sprache: C++ 11

Ich habe eine Anwendung geschrieben, die die Echtzeituhr basierend auf verschiedenen Quellen ändern muss. Im Hintergrund basiert der Grund dafür, dass ich NTP nicht verwende, auf verschiedenen Taktquellen, die an verschiedenen Stellen für alle aktuellen Anwendungen benötigt werden, die CLOCK_REALTIME verwenden. Diese Anwendung empfängt eine Taktreferenzzeit und setzt die Uhr unter Verwendung von clock_settime. Dies gibt die Nachricht Operation not permitted zurück.

if(clock_settime(CLOCK_REALTIME, &timeRT) != 0) { std::cerr << " Set clock_settime(CLOCK_REALTIME, &timeRT) = " << strerror(errno) << std::endl; }

Ich nehme die Anwendungen Privilegien sind nicht richtig eingestellt.

  • Irgendeine Richtung, wie man das macht?
  • Alles andere sollte ich überprüfen?

Antwort

1

Führen Sie Ihre Anwendung als root, und bevor Sie versuchen, die Uhr einzustellen, rufen:

procmgr_ability(0, PROCMGR_AID_CLOCKSET); 

Sie müssen enthalten:

#include <sys/procmgr.h> 
Verwandte Themen