I'm trying to implement a different flavor of the 'nice' command of unix in C. I have seen the definitions of nice() system call and setpriority() call. The nice() call only increments/decrements the priority of the process. If I want to set the priority of a process to a particular value, can't I use the nice() call? Basically, other than how the priority is modified, is there any difference between nice() and setpriority() ?
相关问题
- Multiple sockets for clients to connect to
- Is shmid returned by shmget() unique across proces
- What is the best way to do a search in a large fil
- glDrawElements only draws half a quad
- how to get running process information in java?
nice
sets your own priority (the niceness of the current process).setpriority
lets you set the niceness of other processes (or process groups or users). Think of it asrenice
.man 3p nice
man 3p setpriority
nice()
modifies the nice value of the current process relative to its current nice value, so the process doesn't need to know about its starting nice value, it only cares that it should be nicer to the system (e.g: a process launches a child who does some background processing, the child sets itself to be nice).setpriority()
use case is the user explicitly setting absolute nice values to specific processes.It's historical.
nice()
was introduced long beforesetpriority()
. For backwards compatibility, thenice
function was retained.