linux下ss命令源码学习(二):linux c代码获取后台进程名称及pid
2016-10-29 09:41
579 查看
该代码来源于ss命令源码
#include <stdio.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <syslog.h> #include <fcntl.h> #include <sys/ioctl.h> #include <string.h> #include <arpa/inet.h> #include <resolv.h> #include <dirent.h> #include <fnmatch.h> #include <dirent.h> void get_proc_pid(void) { const char *root = "/proc/"; struct dirent *d; char name[1024] = {0}; int nameoff = 0; DIR *dir; snprintf(name, sizeof (name), "%s", root); if (strlen(name) == 0 || name[strlen(name) - 1] != '/') { snprintf(name + strlen(name), sizeof (name) - strlen(name), "%s", "/"); } nameoff = strlen(name); dir = opendir(name); if (!dir) { return; } while ((d = readdir(dir)) != NULL) { char process[16] = {0}; int pid = 0, pos = 0; DIR *dir1; char crap; if (sscanf(d->d_name, "%d%c", &pid, &crap) != 1) { continue; } snprintf(name + nameoff, sizeof (name) - nameoff, "%d/fd/", pid); pos = strlen(name); if ((dir1 = opendir(name)) == NULL) { continue; } process[0] = '\0'; char tmp[1024] = {0}; FILE *fp = NULL; snprintf(tmp, sizeof (tmp), "%s/%d/stat", root, pid); if ((fp = fopen(tmp, "r")) != NULL) { fscanf(fp, "%*d (%[^)])", process); fclose(fp); } printf("--%s--%d\n",process, pid); closedir(dir1); } closedir(dir); } int main(int argc, char *argv[]) { get_proc_pid(); return 0; }
相关文章推荐
- linux下ss命令源码学习(一):进程名、pid的获取及存储
- linux命令(26):Bash Shell 获取进程 PID
- linux学习入门 基础部分(7)【1.进程定义2.ps命令3.进程优先级4.环境中进程的前后台调用5.进程信号6.用户登陆审记7.top命令】
- linux获取精准进程PID之pgrep命令
- linux下获取指定exe进程pid和详细信息的命令
- Linux命令 -- 获取 进程信息:name 、stat 、PID
- Linux 运行进程实时监控pidstat命令详解
- 进程名字获取进程的进程号PID,类似pidof,C函数,适合linux,AIX和hp-unix平台
- 使用ps命令获取Linux环境下全部RAC集群进程信息
- linux根据pid获取进程名和获取进程pid(c语言获取pid)
- Linux用ps命令查找进程PID再用kill命令终止进程的方法
- python学习五:执行linux命令的两种方法、提高运行效率、进制转换、切片详解、ip和mac获取
- linux-使用pidstat命令监视某进程的资源使用
- Linux用ps命令查找进程PID再用kill命令终止进程的方法
- linux学习入门2-3——bash命令基本操作(linuxcast.net)(bash部分快捷键、uname、history、通配符、切换用户、作业管理(前台、后台运行,暂停等操作))
- Linux 父进程如何获取子进程返回值?parent get child process return value,fork,wait,wait_pid
- Linux 运行进程实时监控pidstat命令详解
- Linux 变干边学 学习笔记之Linux进程、管道和重定向命令
- 使用ps命令获取Linux环境下全部RAC集群进程信息
- Linux学习笔记之后台进程(at和&)