获取没有库函数的进程ID?

时间:2014-09-30 03:53:49

标签: c++ c process pid

嗨我知道如何使用c ++使用c ++获取pid getpid()无论如何都可以在不调用库函数的情况下执行此操作吗?

2 个答案:

答案 0 :(得分:1)

如果您正在使用系统调用,那么就有:

http://man7.org/linux/man-pages/man2/syscall.2.html

#include <unistd.h>
#include <sys/syscall.h>
#include <sys/types.h>

int main()
{
    pid_t pid = syscall(SYS_getpid);

    std::cout << pid << '\n';
}

答案 1 :(得分:0)

我的窗户伙伴们在那里..

#include <cstdio>
#include <windows.h>

int getPID()
{
    #ifndef _MSC_VER
        #ifndef __x86_64__
        asm ("movl %%FS:0x20, %%eax":::);
        #else
        asm ("movq %%GS:0x40, %%rax":::);
        #endif
    #else
        #ifndef _WIN64
        __asm {mov eax, FS:[0x20];};
        #else
        __asm {mov rax, GS[0x40];};
        #endif
    #endif
}

int main()
{
    printf("%d\n", getPID());
    printf("%d", GetCurrentProcessId());
}