当前位置:  技术问答>linux和unix

怎么知道LINUX系统某个特定的程序在运行.并且把它杀掉.用C实现.谢谢了.

    来源: 互联网  发布时间:2015-12-17

    本文导语:  如上 | #include  #include  #include  #include  /* typedef int bool; #define true 1 #define false 0 */ char *get_ps_name(char *string, int *pid) { // printf(string); char seps[] = " "; char *token; int i = 0; token = st...

如上

|
#include 
#include 
#include 
#include 

/*
typedef int bool;
#define true 1
#define false 0
*/

char *get_ps_name(char *string, int *pid)
{
// printf(string);

char seps[] = " ";
char *token;
int i = 0;

token = strtok(string, seps); i++;
*pid = atoi(token); //pid在第一列
while(token != NULL)
{
// printf("%d: %sn", i++, token);
if(i == 4)return token; //进程名在第4列
token = strtok(NULL, seps); i++;
}

return NULL;
}

bool IsExist(char* processname, char* filename, int *pid)
{
*pid = -1;
bool ret = false;

FILE *stream;
if( (stream = fopen(filename, "r")) == NULL)
{
printf("open %s failed.", filename);
return false;
}

char line[1024];
char *ch;
ch = fgets(line, 1024, stream);//略去第一行
while(ch != NULL)
{
ch = fgets(line, 1024, stream);
line[strlen(line)-1] = '';
char *ps = get_ps_name(line, pid);
if( ps != NULL && strcmp(processname, ps) == 0)//找到了进程名
{
//确认进程存在
char buf[64];
sprintf(buf, "/proc/%d", *pid);
if( access(buf, F_OK) == 0)
ret = true;
break;
// printf("%d: %sn", *pid, ps);

}
// printf("%d: %sn", pid, get_ps_name(line, &pid));
}
/*
if(feof(stream))
printf("end filen");
else
printf("errorn");
*/

fclose(stream);
return ret;

}

int main(int argc, char* argv[])
{
if(argc != 2)
{
printf("usage: find_ps_name processnamen");
exit(1);
}

int pid;
char *command = "ps -A > tmp";
system(command);

char *name = argv[1] /*"rpc.rquotad"*/;
if(IsExist(name, "tmp", &pid))
{
printf("%d: %sn", pid, name);
char buf[100];
sprintf(buf, "kill %d", pid);
if(system(buf)

    
 
 

您可能感兴趣的文章:

  • 怎么查看Linux中所运行的进程,并且知道哪些是停止响应的,用什么命令可以杀掉停止响应的进程?
  • 已知一个进程的PID,但不知道这个进程是否停止,如何能知道系统中是否有相应的进程在运行。
  • docker中文入门学习手册 iis7站长之家
  • QQforlinux 解包后 不知道如何运行~~~
  • 如何知道正在运行的服务有哪些?
  • 怎样知道一个程序是否在运行?
  • 大家知道为什么jar文件可以直接运行吗?
  • 下载了两个文件,不知道如何运行
  • 在程序中启动一个进程(不是线程),如何知道该进程已运行结束
  • 听说在linux里面安装一个什么X的程序就可以运行windows的软件,不知道是什么软件
  • 如何知道某个程序有多少个进程在运行?
  • 如何知道程序运行过程
  • 有趣的循环--你知道运行结果吗?
  • 我运行东西时候出现错误,不知道应该怎么解决...帮帮我吧
  • GUI程序运行时老是报错,不知道怎么搞?
  • 如何知道运行的平台是Windows还是Solaris?
  • 那位高手知道那里有能在ipaq上运行的虚拟机下载?(能支持wince 3.0最好了)
  • servlet已经编译成功,但是不知道放在那里运行?我用的是resin~~~~~help~~~~~~~~`
  • 大家好!我最近一个浏览器的原代码不知道怎么编译运行。。请帮帮忙?
  • 安装wine出了问题,不知道怎么运行??
  • 刚刚装了fedora16不知道为什么,感觉有启动和运行起来有点慢
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 有人知道 Java Code Viewer 5.0 的注册码吗? 谢谢 谢谢
  • linux进入界面需要login我不知道,谁能告诉我,谢谢
  • 哪位大侠知道ssldump在linux下怎么用?高分相送,谢谢
  • Linux下有开放源码的PC硬件诊断软件吗?那位大吓知道,先谢谢了
  • 哪位兄弟知道有关QT的资料可以下,,谢谢!
  • 哪位大哥知道杭州CSK公司怎么样?面试会试些什么呀? 薪水大概多少?急!!谢谢!!
  • 我们知道内核源代码文件都放在/linux下,但目录/linux的绝对路径是啥?谢谢!
  • 请问谁有或知道哪里 exceed下载,请告诉我,谢谢!
  • 有没有人知道怎么样设置 /etc/printcap 谢谢!
  • 怎么才能知道声卡、显卡、网卡的信息?如何安装驱动?请各位高手指点,谢谢!!!
  • 那位知道DNS报文格式?谢谢了
  • 有没有高手知道linux系统定制(最小化定制)的?(在线守候)请您提供一点相关资料,谢谢!
  • 哪位知道freebsd的源代码下载地址的,麻烦给一下,谢谢!
  • 请问那位大虾知道JBuilder 3.5的注册码?先谢谢了。
  • JAVA的认证SL110有没有用,小弟急需知道,今天就要答案,谢谢。
  • 那位大侠知道ppt格式的文件要用什么软件看啊,这里谢谢了。
  • 那位大侠知道gtk+中,(void *)和gpointer 的区别?谢谢
  • 那位网友知道UltraEdit32-v6.00a的注册码,能帮我一下吗?谢谢~
  • 我正在做一个Linux下基于ncurses库的文本编辑器,想知道如何取得Ctrl键,请高手指点,谢谢!
  • 有那位仁兄知道,在LINUX下用什么命令编译JAVA原文件,谢谢,在线等待。
  • 如何知道在linux下面如何知道mysql服务是用哪个端口啊
  • 那位知道怎样能知道 linux C/C++文件它所依赖的文件
  • 哪位大哥知道?我怎样知道LINUX redhat 7.2下声音设备由哪个应用程序占用?
  • 我做了个简单的留言板,不知道如何知道留言者的ip地址?
  • 只知道一个命令, 不知道其进程,问如何停止它?
  • red hat linux 9.0安装问题,不知道有人知道吗?
  • 知道进程的ID,有什么函数知道这个进程还活不活?
  • 我插入USB设备,知道是1-1:1.0下面,如何知道ttyUSB?
  • UI小问题,可我就是不知道怎么实现,或许您知道……
  • 我在rh8下装了wine,可是我不知道装到哪里了,那位知道默认路径?
  • 请问如何在不知道对方IP,仅知道MAC地址的情况下和对方通信呢?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3