2008-08-27 6 views
11

Sous Windows je peux faire:Changer la priorité du processus actuel en C

HANDLE hCurrentProcess = GetCurrentProcess(); 

SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS); 

Comment puis-je faire la même chose sur * nix?

+0

http://stackoverflow.com/questions/29621/change-own-process-priority-in-c –

+0

Pouvez-vous réduire votre la priorité de votre propre processus sans être superutilisateur? –

+0

Oui, bien que vous ne puissiez généralement pas le relancer. – thelsdj

Répondre

22

Essayez:

#include <sys/time.h> 
#include <sys/resource.h> 

int main(){ 
    setpriority(PRIO_PROCESS, 0, -20); 
} 

Notez que vous devez exécuter en tant que super-utilisateur pour que cela fonctionne.

(pour plus d'informations, tapez « homme setpriority » à l'invite.)

1

@ allain

Pouvez-vous réduire votre propre processus priorité sans être super-utilisateur?

Bien sûr. Soyez conscient, cependant, que c'est une rue à sens unique. Vous ne pouvez même pas revenir à l'endroit où vous avez commencé. Et même des réductions de priorité assez faibles peuvent avoir des effets étonnamment importants sur le temps de fonctionnement lorsque le système subit une charge importante.

4

Si vous faites quelque chose comme ça sous unix, vous voulez (en tant que root) chmod votre tâche et définir le bit s. Ensuite, vous pouvez changer qui vous exécutez en tant que, quelle est votre priorité, votre planification de threads, etc lors de l'exécution. C'est génial tant que vous n'écrivez pas une application massivement multithread avec un bogue dedans pour que vous preniez en charge une boîte de 48 CPU et personne ne peut vous arrêter parce que vous avez chaque processeur tournant à 100% avec tous les threads mis à SHED_FIFO (fonctionne jusqu'à la fin) en cours d'exécution en tant que root.

Nah .. je ne serais pas parler de l'expérience ....

Questions connexes