程序號碼(process id)
Code:
#include <stdio.h>
#include <unistd.h>
#include <dirent.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#define MAX_LONG_LENGTH 1024
#define MAX_SHORT_LENGTH 128
unsigned int get_process_id_fun(char *app_name)
{
DIR *dir_p = NULL;
struct dirent *dir_entry_p = NULL;
char dir_name[MAX_SHORT_LENGTH];
char target_name[MAX_SHORT_LENGTH];
char exe_link[MAX_SHORT_LENGTH];
int target_result = -1;
int result = -1;
dir_p = opendir("/proc/");
while(NULL != (dir_entry_p = readdir(dir_p)))
{
if (strspn(dir_entry_p->d_name, "0123456789")
== strlen(dir_entry_p->d_name))
{
strcpy(dir_name, "/proc/");
strcat(dir_name, dir_entry_p->d_name);
strcat(dir_name, "/");
exe_link[0] = 0;
strcat(exe_link, dir_name);
strcat(exe_link, "exe");
target_result = readlink(exe_link,
target_name, sizeof(target_name)-1);
if (target_result > 0)
{
target_name[target_result] = 0;
if (strstr(target_name, app_name) != NULL)
{
result = atoi(dir_entry_p->d_name);
//printf("getProcessID(%s) :Found. id = %d\n", app_name, result);
closedir(dir_p);
return result;
}
}
}
}
closedir(dir_p);
return result;
}
int main(int argc, char *argv[])
{
printf("smbd id is %d\n", get_process_id_fun("smbd"));
return 0;
}
Result:
smbd id is 3895415
沒有留言:
張貼留言