我目前正在开发一个关于在linux环境中将进程设置为一个核心的项目。我使用sched_setaffinity来完成这项工作,我想知道linux是否提供了一些函数来获取进程运行的核心。我使用top命令,发现它可以使用j选项获取此信息。所以我确信有一些方法可以在用户空间中获取此信息。
答案 0 :(得分:5)
你可能想要sched_getcpu()
。如果您运行的是较旧版本的glibc,则可以阅读/proc/[pid]/stat
的第39个字段以获取相应的pid - 有关详细信息,请参阅proc(5)
手册页。
答案 1 :(得分:1)
您可以使用内联汇编(在x86拱门上)来实现此目的:
mov eax, 1 ; cpuid functionality depends on the value of eax
cpuid ; get cpu info
shr ebx, 24 ; ebx[31:24] is the cpu ID.
mov eax, ebx ; eax contains the cpu ID
您可以在此处阅读有关CPUID指令的更多信息http://download.intel.com/design/processor/applnots/24161832.pdf