42.管道,cmd执行指令写到管道中

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 #include <string.h>
 5 #include <Windows.h>
 6
 7 int exeshell(char *cmd, char *result)//传递指令,返回结果
 8 {
 9     FILE *pf = _popen(cmd, "r");//打开一个管道,用管道执行cmd,结果存放在管道中
10     if (pf == NULL)
11     {
12         printf("创建管道失败");
13         return 0;
14     }
15     else
16     {
17         while (!feof(pf))//如果没有到文件末尾
18         {
19             char str[256] = { 0 };
20             if (fgets(str, 256, pf))//返回值是读到多少个字符
21             {
22                 strcat(result, str);//拼接字符串
23             }
24         }
25         _pclose(pf);//关闭管道
26
27         return 1;
28     }
29 }
30
31 void main()
32 {
33     char result[1024 * 10] = { 0 };//缓冲区
34
35     if (exeshell("tasklist", result)!=0)
36     {
37         printf("%s", result);
38     }
39
40     char *p = strstr(result, "QQ.exe");
41
42     int i = 0;
43     for (char *p = strstr(result, "QQ.exe"); p != NULL; p = strstr(p+1,"QQ.exe"))
44     {
45         i++;
46         printf("QQ运行了%d个\n", i);
47     }
48
49     if (p != NULL)
50     {
51         MessageBoxA(0, "QQ运行中", "提示", 0);
52     }
53     else
54     {
55         MessageBoxA(0, "不在运行", "提示", 0);
56     }
57
58 }

原文地址:https://www.cnblogs.com/xiaochi/p/8352813.html

时间: 2025-01-08 04:32:45

42.管道,cmd执行指令写到管道中的相关文章

ASP.NET WebAPI 14 仿写Filter管道

WebAPI中有设计了几种管道(Channel),大概如下:HttpMessageHandler,ActionFilter管道,ExceptionFilter管道.在三种管道中HttpMessageHandler管道与ExceptionFilter管道是基于级别设计的,ActionFilter管道是基于方法级别设计的.对于ActionFilter管道,因为采用的是AOP的思想,所以按方法级别去设计. 在看WebAPI源码过程中对ActionFilter管道中何用的表达示树与闭包等内容之前并没有下

VC 模拟CMD 匿名管道

#include "stdafx.h" #include <Windows.h> #include <stdio.h> #include <stdlib.h> int Call(char Cmd[]) { SECURITY_ATTRIBUTES sa; HANDLE Hread,Hwrite; sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor = NULL; sa.bI

Linux进程间通信—管道

Linux下的进程通信手段基本上是从UNIX平台上的进程通信手段继承而来的.而对UNIX发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间的通信方面的侧重点有所不同.前者是对UNIX早期的进程间通信手段进行了系统的改进和扩充,形成了"system V IPC",其通信进程主要局限在单个计算机内:后者则跳过了该限制,形成了基于套接口(socket)的进程间通信机制.而Linux则把两者的优势都继承了下来 linux进程间通信(

进程间通信第一课--管道

一个进程连接数据流到另一个进程--管道--pipe 进程管道 1 #include <stdio.h> 2 FILE * popen(const char * command, const char * open_mode) 3 int pclose(FILE * stream_to_close); popen函数允许一个程序将另一个程序作为新进程来启动并可以传递数据给它或者通过它接收数据command是要运行的程序名和相应的参数open_mode必须是r或者是wr的情况是:被调用程序的输出可

匿名管道

1关于管道 有两种类型的管道:匿名管道和命名管道.匿名管道比命名管道需要更少的开销,但是提供有限的服务. 术语管道,就像用在这里的,暗示管道被用作一个信息管子.从概念上讲,一个管道有两端.单向管道允许进程在一端写入,并且允许进程在令一端读入.双向管道允许进程在同一段读写. 匿名管道 命名管道 1.1 匿名管道 匿名管道是一种没有名字的,通常在父子进程之间传递数据的管道.匿名管道是本地的:它们不能用在网络之间的通信. 匿名管道操作 管道句柄继承 匿名管道安全和访问权限 1.1.1匿名管道操作 Cr

linux中用无名管道进行文件的读写

1管道是什么: 水管子大家知道,有两端,在此一端用来读一端用来写,其中一端的输出作为另外一端的输入. 2 函数原型 int pipe(int pipefd[2]);//参数中分别代表的两端 3 例子:管道一端作为写 另外一端作为读 父子进程实现 1 #include <unistd.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 int main() 6 { 7 pid_t pid; 8 int temp; 9 int

第4章 管道和FIFO

4.1 管道 管道是由pipe函数创建的,提供一个单向数据流. 头文件 #include <unistd.h> 函数原型 int pipe(int fd[2]); 返回值 成功则为0,出错则为-1 函数功能 该函数返回两个文件描述符:fd[0]和fd[1].fd[0]用来读操作,fd[1]用来写操作 说明 管道只能用于有亲缘关系进程间通讯.要实现非亲缘关系进程间通讯用有名管道FIFO 4.2 管道实现半双工通讯 实现的步骤: (1)创建管道(fd[0]和fd[1]) (2)fork (3)父进

进程间通信之管道(pipe、fifo)

我们先来说说进程间通信(IPC)的一般目的,大概有数据传输.共享数据.通知事件.资源共享和进程控制等.但是我们知道,对于每一个进程来说这个进程看到属于它的一块内存资源,这块资源是它所独占的,所以进程之间的通信就会比较麻烦,原理就是需要让不同的进程间能够看到一份公共的资源.所以交换数据必须通过内核,在内核中开辟?块缓冲区,进程1把数据从?户空间 拷到内核缓冲区,进程2再从内核缓冲区把数据读?,内核提供的这种机制称为进程间通信.一般我们采用的进程间通信方式有 管道(pipe)和有名管道(FIFO)

一起talk C栗子吧(第八十八回:C语言实例--使用管道进行进程间通信一)

各位看官们,大家好,上一回中咱们说的是使用管道进行进程间通信概述的例子,这一回咱们说的例子是:使用第一种管道进行进程间通信.闲话休提,言归正转.让我们一起talk C栗子吧! 我们在上一回中介绍了三种管道,这一回中我们介绍第一种管道(伪管道)及其使用方法.主要是让大家明白如何使用管道进行进程间的通信. 第一种管道我称之为伪管道.在介绍它之前,我们先介绍两个函数:popen和pclose. popen函数的原型 FILE * popen(const char * command, const ch