#include <iostream>
#include <Windows.h>
#include <tlhelp32.h>
#include <tchar.h>
std::uint32_t get_proc_id(const std::wstring& name)
{
auto result = 0ul;
auto snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (snapshot == INVALID_HANDLE_VALUE)
return result;
auto pe32w = PROCESSENTRY32W{}; // use the wide version of the struct
pe32w.dwSize = sizeof(PROCESSENTRY32W);
if (!Process32FirstW(snapshot, &pe32w))
return CloseHandle(snapshot), result;
while (Process32NextW(snapshot, &pe32w))
{
if (name == pe32w.szExeFile) // use std::wstring's operator, not comparing pointers here
{
result = pe32w.th32ProcessID;
break;
}
}
CloseHandle(snapshot);
return result;
}
int main()
{
const auto pid = get_proc_id(L"explorer.exe");
std::cout << pid;
std::cin.get();
}
lsof -i tcp:3000
kill -9 pId
julien@ubuntu:~/c/shell$ cat pid.c
#include <stdio.h>
#include <unistd.h>
/**
* main - PID
*
* Return: Always 0.
*/
int main(void)
{
pid_t my_pid;
my_pid = getpid();
printf("%u
", my_pid);
return (0);
}
julien@ubuntu:~/c/shell$ gcc -Wall -Werror -pedantic pid.c -o mypid && ./mypid
3237
julien@ubuntu:~/c/shell$ ./mypid
3238
julien@ubuntu:~/c/shell$ ./mypid
3239
julien@ubuntu:~/c/shell$