2016-09-27 2 views
0

私のシステムの時刻をcプログラムから設定/変更したい。私はインターネット上で多くを検索しましたが、満足のいく結果は見つかりませんでした。私はsettimeofdayにllokを持っていましたが、1970年1月1日00:00:00 UTC以来、秒とマイクロ秒が経過しています。linuxのcプログラムからの時刻の設定

私は明示的に日付、年、月、時、分、秒とUTC時間を設定できるようにしたいと思う。

これにはcライブラリ関数やその他のメカニズムがありますか?

+0

[Cの標準的な日付と時刻関数の優れたリファレンス](http://en.cppreference.com/w/c/chrono)は良いスタートになるかもしれません。 –

+0

秒間に['mktime()'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/mktime.html)が必要です。サブ秒を慎重に選択する必要があります。時間を設定するには 'root'である必要があります。なぜジョブを実行するために 'date'コマンドを使用しないのですか?それはそのためのモードを持っています。 –

+0

時間を設定すると、一部のソフトウェアライセンス(Oracleなど)が無効になることがあります。 OSを再構築する必要があるかもしれません。無効になったことが検出されると、有効な状態に戻すことはできないからです。 – cup

答えて

1
  1. YYMMDDhhss形式の時刻をstruct timeに入力します。 曜日のの年のフィールドを無視することができます。 tm_isdstに負の値を設定して、その日にDSTが有効かどうかをシステムに判断させます。
  2. mk_timeを指してstruct timeを指していると、構造体の欠落しているフィールドが埋められ、この日付に設定されたtime_tが返されます。
  3. この戻り値をstruct timeval(あなたの好みに合わせた部分)に入れてsettimeofday()を使用してください。 timezone引数には "NULL"を使用します。

注意あなたがシステム時刻を設定するための適切な(ルート)権限を持っている必要があり、また、settimeofdayは、Linux上でいくつかの特別な特殊性を持っているので、徹底的にmanページを読むことをお勧めされていることに注意

のすべて上記のプログラムには明らかにtime.hが含まれている必要があります。

関連する問題