linux平台下C语言按进程名查找进程号pid

首先建立一个while循环可执行文件

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
        while(1);
}

编译运行:

$ gcc forever.c -o forever
$ ./forever.exe &

查看进程编号:

$top
top - 09:59:45 up 21 days, 11:02,  0 users,  load average: 2.94, 2.40, 1.79
任务:   5 total,   2 running,   3 sleeping,   0 stopped,   0 zombie
%Cpu0  :  13.9/3.0    17[|||||||||                                            ]
%Cpu1  :  33.7/1.0    35[|||||||||||||||||||                                  ]
%Cpu2  :  26.7/2.0    29[|||||||||||||||                                      ]
%Cpu3  :  29.7/1.0    31[|||||||||||||||||                                    ]
GiB Mem : 54.7/3.945    [                                                     ]
GiB Swap:  2.1/1.375    [                                                     ]

进▒ USER      PR  NI    VIRT    RES  %CPU %MEM     TIME+ ▒ COMMAND
  996 toa      0   0    3.4m   4.0m  99.9  0.1   0:26.04 R forever

是996没错了!

然后编写一个可以运行命令行的C语言函数

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

int main(int argc, char *argv[])
{
	char cmd[256];
	memset(cmd, 0, 256);
	
	pid_t pid = getpid();
	
	if(argc < 2)
	{
		printf("Usage: ./a.exe <pid name>\n");
		return -1;
	}
	
	sprintf(cmd, "ps -e | grep %s | awk '{print $1}'", argv[1]);
	
	system(cmd);
	
	return 0;
}

编译运行:

$ gcc a.c
$ ./a.exe forever
996

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值