Comment puis-je obtenir le temps d'inactivité du système (pas de touches enfoncées - souris déplacée) en C ou en Python?Obtenir le temps d'inactivité du Mac C ou Python
EDIT: Mon programme suspend un compteur lorsque le temps de repos> 10 sec
Comment puis-je obtenir le temps d'inactivité du système (pas de touches enfoncées - souris déplacée) en C ou en Python?Obtenir le temps d'inactivité du Mac C ou Python
EDIT: Mon programme suspend un compteur lorsque le temps de repos> 10 sec
Si vous voulez dire le temps passé au cours d'un programme, une fois le programme terminé, alors la meilleure chose à faire est de lancer la unix fonction « temps »:
# echo foo
foo
# time echo foo
foo
real 0m0.000s
user 0m0.000s
sys 0m0.000s
Il y a une réponse plus technique si vous avez vraiment besoin de faire la collecte des données alors que le programme est en cours d'exécution - Je vais jeter un coup d'oeil au livre unix pour vous ...
Mise à jour:
clock_t fois (struct tms * buf);
Recherchez les détails sur la page de manuel ou dans la section 8.15 de «Programmation avancée dans l'environnement UNIX» - Stevens - la bible pour ce genre de questions.
Mise à jour 2:
Run « sar » dans un autre processus (c'est comme une version stdout impression de haut), pour trouver un résultat que vous voulez, et envoyer un signal au processus.
Alternativement, l'autre solution publiée concernant "ioreg".
Cependant, si vous avez un programme qui est lui-même de type "noyau", avec une grande boucle d'action à la base, vous trouverez peut-être mieux de suivre vous-même les cycles inutilisés. Sinon, il s'agit d'un problème non trivial à résoudre.
qu'en est-il de python (win)? comme module de temps en lib standard de python ...?
Je n'ai pas un Mac à tester sur le moment, ne peut donc pas confirmer cela fonctionne, mais ce fil semble offrir la solution que vous cherchez: http://www.dssw.co.uk/sleepcentre/threads/system_idle_time_how_to_retrieve.html
En un mot, utilisez la Module subprocess et appelez:
ioreg -c IOHIDSystem
Ensuite, la sortie Parse et diviser la valeur par 10^9 pour obtenir le temps d'inactivité en secondes.
Votre application est-elle pilotée par l'interface graphique? Si tel est le cas, vous pouvez démarrer une minuterie lorsque l'interface graphique apparaît, puis avoir des rappels au clavier et à la souris au niveau supérieur. Chaque fois que le rappel du clavier ou de la souris est déclenché, réinitialisez le minuteur. Sinon, lorsque la minuterie s'éteint, son code de gestionnaire devrait suspendre votre compteur.
Sinon, ignorez ceci ... ;-)
Exécution d'un écho via l'invite du superutilisateur? ;) – zneak
@zneak - ouais, tant que vous faites une copie de/proc pendant que vous le faites. :-) – eruciform
Question mise à jour – Gci1