检索进程是否运行------------strstr()-------------

分析:通过cmd指令(windows平台tasklist/Linux平台ps -aux)可以查看到进程名称,然后通过字符串进行匹配。

注意点:output的空间需要足够大,不然会有溢出的错误。

windows:

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void execmd(char *cmd, char *result)
{
	char buffer[128] = { 0 };//定义一个字符串缓冲区
	FILE *pipe = _popen(cmd, "r");//创建一个管道,执行指令,把管道当做文件来处理
	if (NULL == pipe)
	{
		printf("运行失败");
		return;
	}
	else
	{
		while (!feof(pipe))//判断是否到了文件末尾,没有到末尾就继续
		{
			if (fgets(buffer, 128, pipe))//读取文件的缓冲区
			{
				strcat(result, buffer);//连接字符串,将结果保存到result
			}
		}
		_pclose(pipe);//关闭管道的作用
		return;
	}
}

void main()
{
	char output[1024*10] = { 0 };//定义一个字符串,接受输出

	execmd("tasklist", output);//执行指令,将结果保存到output
	printf("%s", output);//输出结果
	if (strstr(output, "Fetion.exe") == NULL)
	{
		printf("飞信不存在\n");
	}
	else
	{
		printf("飞信存在\n");
	}

	system("pause");
}

linux:

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void execmd(char *cmd, char *result)
{
	char buffer[128] = { 0 };//定义一个字符串缓冲区
	FILE *pipe = popen(cmd, "r");//创建一个管道,执行指令,把管道当做文件来处理
	if (NULL == pipe)
	{
		printf("运行失败\n");
		return;
	}
	else
	{
		while (!feof(pipe))//判断是否到了文件末尾,没有到末尾就继续
		{
			if (fgets(buffer, 128, pipe))//读取文件的缓冲区
			{
				strcat(result, buffer);//连接字符串,将结果保存到result
			}
		}
		pclose(pipe);//关闭管道的作用
		return;
	}
}

void main()
{
	char output[1024*100] = { 0 };//定义一个字符串,接受输出

	execmd("ps -aux", output);//执行指令,将结果保存到output
	printf("%s", output);//输出结果
	if (strstr(output, "smbd -F") == NULL)
	{
		printf("不存在\n");
	}
	else
	{
		printf("存在\n");
	}

}
时间: 2024-08-17 18:46:43

检索进程是否运行------------strstr()-------------的相关文章

vmware卸载后无法重装,因为有一个vmware.exe进程一直运行.但我一直找不到也杀不掉.

问题描述 vmware卸载后无法重装,因为有一个vmware.exe进程一直运行.但我一直找不到也杀不掉. 能找的所有地方我都找过了,就是杀不掉这个进程,有没有人遇见过啊?这是怎么回事?应该怎么办? 解决方案 任务管理器里面的显示所有用户进程勾选了吗?

《UNIX网络编程 卷1:套接字联网API(第3版)》——8.9 服务器进程未运行

8.9 服务器进程未运行 我们下一个要检查的情形是在不启动服务器的前提下启动客户.如果我们这么做后在客户上键入一行文本,那么什么也不发生.客户永远阻塞于它的recvfrom调用,等待一个永不出现的服务器应答.然而这是一个很好的例子,它要求我们更多地了解底层协议以理解网络应用进程将发生什么. 首先,我们在主机macosx上启动tcpdump,然后在同一个主机上启动客户,指定主机freebsd4为服务器主机.接着,我们键入一行文本,不过这行文本没有被回射. macosx % udpcli01 172

python开启多个子进程并行运行的方法_python

本文实例讲述了python开启多个子进程并行运行的方法.分享给大家供大家参考.具体如下: 这个python代码创建了多个process子进程,创建完成后先start(),最后统一join,这样所有子进程会并行执行. from multiprocessing import Process import sys, os import time def timetask(times): time.sleep(times) print time.localtime() def works(func, a

python实现在每个独立进程中运行一个函数的方法_python

本文实例讲述了python实现在每个独立进程中运行一个函数的方法.分享给大家供大家参考.具体分析如下: 这个简单的函数可以同于在单独的进程中运行另外一个函数,这对于释放内存资源非常有用 #!/usr/bin/env python from __future__ import with_statement import os, cPickle def run_in_separate_process(func, *args, **kwds): pread, pwrite = os.pipe() pi

【原创】如何查看某进程下运行的线程

研究 Atlas 过程中,需要了解其进程模型(线程模型),那么如何查看其运行模式呢?  前提:Atlas 配置了 daemon 模式和 keepalive 功能.  ? 1 2 3 4 5 6 7 [root@Betty conf]# vi modb.cnf   [mysql-proxy] ... daemon = true keepalive = true ... 查看方式: 1. ps 命令查看 从 man ps 中可以如下说明,可以显示进程关系,  ? 1 2 3 To print a p

Linux 进程后台运行的几种方式(screen)

Ctrl+z/bg/nohup/setsid/& 在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了: # ./rsync.sh & # jobs 对于已经在前台执行的命令,也可以重新放到后台执行,首先按ctrl+z暂停已经运行的进程,然后使用bg命令将停止的作业放到后台运行:bg %1,放回前台运行:%1. 但是如上方到后台执行的进程,其父进程还是当前终端shell的进程,而一旦父进程退出,则会发送hangup

Python实现在Linux系统下更改当前进程运行用户_python

在上一篇文章中,我们讲了如何在linux上用python写一个守护进程.主要原理是利用linux的fork函数来创建一个进程,然后退出父进程运行,生成的子进程就会成为一个守护进程.细心观察的可能会发现,这个守护进程的运行身份是执行这个程序的用户,如果把这个守护程序加入到系统的服务项,那么这个守护程序的执行身份应该是root. 一个情况出现了,root的权限比较大,如果通过这个root身份的守护程序来进行操作,危险性是比较大的.一种好的办法是生成一个身份为root的master进程用来接受请求,生

让进程在后台可靠运行的几种方法

整理自网络http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/ 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败.如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子, 您可以针对不同的场景选择不同的方式来处理这个问题. 前置知识: xterm,console,tty,pts,pty的区别 ·        she

Linux下让进程在后台可靠运行的几种方法

想让进程在断开连接后依然保持运行?如果该进程已经开始运行了该如何补救? 如果有大量这类需求如何简化操作? 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败.如何让命令提交后不受本地关闭终端窗口.网络断开连接的干扰呢? 下面举了一些例子, 您可以针对不同的场景选择不同的方式来处理这个问题. nohup/setsid/& 场景 如果只是临时有一个命令需要长时间运行,什么方法能最简便的保证它在后台稳