精华内容
下载资源
问答
  • 今天就让kt来带大家动手实践一下,以便提高大家学习的热情,写一段代码C++代码windows系统上,实现所有进程遍历。 默认大家都已经掌握了一定的C++编程水平,但是掌握度不高也没关系,照着步骤来

    大家好,我是KookNut39,在CSDN写文,分享一些自己认为在学习过程中比较重要的东西,希望可以帮助你进步。最近在更新C/C++方面的知识,感兴趣的可以欢迎关注博主,去专栏查看之前的文章,希望未来能和大家共同探讨技术。

    我相信对于很多学习C++的同学来说,在初学阶段都比较疑惑的一个问题就是,我学这个东西可以干什么?就是为了输出“Hello World”吗?好像学了一堆东西总觉得学的云里雾里,不知道自己能干点什么。变量我知道,数据结构我也了解,类我也学习过,指针我也看过,STL标准模板库老师也讲过,但是这些东西在一起可以干什么?
    在这里插入图片描述

    今天就让kt来带大家动手实践一下,以便提高大家学习的热情,写一段代码C/C++代码在windows系统上,实现所有进程遍历,也就是一个破产乞丐版任务管理器
    默认大家都已经掌握了一定的C/C++编程水平,但是掌握度不高也没关系,照着步骤来,你也一定可以实现进程遍历的操作

    我们首先从main函数开始讲起:

    int main()
    {
    	//设置地域化信息,设置中文,能够识别中文
    	setlocale(LC_ALL, "chs");
    	char* v1 = (char*)("进程枚举:");
    	printf("%s\n", v1);
    	//枚举进程的函数
    	EnumSystemProcess();
    	system("pause");
    	system("cls");
    	system("pause");
    	return 0;
    }
    

    首先我们在main函数中调用了一个设置地域化信息的setlocale函数,因为我们在文中要输出中文。接着就是打印一个字符串,这些都不是重要的代码,接下来调用EnumSystemProcess()函数,这是个自己实现的函数,从这里开始遍历进程:

    //枚举系统进程  拍摄快照
    	HANDLE SnapHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    	if (SnapHandle == INVALID_HANDLE_VALUE)
    	{
    		return;
    	}
    

    这是EnumSystemProcess首先要做的事情,那就是拍摄系统快照,拍摄系统快照的函数是CreateToolhelp32Snapshot,传参为TH32CS_SNAPPROCESS的时候就会返回进程快照的句柄,接下来:

    	//PROCESSENTRY32 必须这样初始化
    	PROCESSENTRY32 ProcessEntry = { sizeof(PROCESSENTRY32) };
    	bool IsOk = ProcessFirst(SnapHandle, &ProcessEntry);
    

    PROCESSENTRY32是一个包含在tlhelp32.h头文件下的系统结构体,其中包含了这些信息:

    typedef struct tagPROCESSENTRY32
    {
        DWORD   dwSize;
        DWORD   cntUsage;
        DWORD   th32ProcessID;          // this process
        ULONG_PTR th32DefaultHeapID;
        DWORD   th32ModuleID;           // associated exe
        DWORD   cntThreads;
        DWORD   th32ParentProcessID;    // this process's parent process
        LONG    pcPriClassBase;         // Base priority of process's threads
        DWORD   dwFlags;
        CHAR    szExeFile[MAX_PATH];    // Path
    } PROCESSENTRY32;
    

    其中关键的字段官方结构体都已经给出了注释,我们需要用到的也就是取其中的th32ProcessID和szExeFile,因为我们只打印进程名和进程ID。
    然后是ProcessFirst函数,这是我自实现的函数,其中为了越过系统空闲进程
    在这里插入图片描述
    进程ID为0:

    BOOL ProcessFirst(HANDLE SnapHandle, PPROCESSENTRY32 ProcessEntry)
    {
    
    	BOOL IsOk = Process32First(SnapHandle, ProcessEntry);
    	if (IsOk && (ProcessEntry->th32ProcessID == 0))
    	{
    		//如果PID = 0,那就byebye  继续去找下一个进程的ProcessEntry
    		IsOk = ProcessNext(SnapHandle, ProcessEntry); 
    	}
    	return IsOk;
    }
    

    然后在其中调用Process32First这个系统函数,为了得到第一个进程的ProcessEntry,如果当前进程id为0,那就继续遍历,去找下一个进程:

    BOOL ProcessNext(HANDLE SnapHandle, PPROCESSENTRY32 ProcessEntry)
    {
    
    	BOOL IsOk = Process32Next(SnapHandle, ProcessEntry);
    	if (IsOk && (ProcessEntry->th32ProcessID == 0))
    	{
    		//递归调用
    		IsOk = ProcessNext(SnapHandle, ProcessEntry);
    	}
    	return IsOk;
    }
    

    在这里我们调用Process32Next去得到下一个进程的PPROCESSENTRY32结构信息,然后进行ID判断,如果不是ID=0,那就返回。返回到EnumSystemProcess的调用处,接下来执行for循环来遍历打印就ok了

    	//索引 为了统计当前进程总数
    	int  Index = 0;
    	for (; IsOk; IsOk = ProcessNext(SnapHandle, &ProcessEntry))
    	{
    		char BufferData[1024];
    		//c:\\windows\\hello.exe  寻找'\\'最后出现的位置
    		char* ProcessName = strrchr(ProcessEntry.szExeFile, '\\');
    		if (ProcessName == NULL)
    		{
    			ProcessName = ProcessEntry.szExeFile;
    		}
    		else
    		{
    			ProcessName++;   //越过反斜杠
    		}
    		sprintf(BufferData, "%-50s%     (0x%08X)", ProcessName, ProcessEntry.th32ProcessID);
    		printf("%s\n", BufferData);
    		Index++;
    	}
    	printf("当前系统进程总共有 %d 个\n", Index);
    

    给大家看一下效果图:
    在这里插入图片描述

    整个遍历进程的实现就到这里结束了,如果大家还有不懂得地方,没关系,可以随时联系我,我来帮大家解答,或者有需要源码的小伙伴,也可以找我拿欧!
    在这里插入图片描述

    喜欢博主的文章,麻烦给个一键三连支持一下🤞🤞🤞,您的支持,是我最大的创作动力!

    今日份共勉:“相逢意气为君饮,系马高楼垂柳边”

    展开全文
  • 进程是操作系统结构的基础;是一个正在执行的程序;计算机中正在运行的程序实例;可以分配给处理器并由处理器执行的一个实体;由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。对应用程序...

    进程是操作系统结构的基础;是一个正在执行的程序;计算机中正在运行的程序实例;可以分配给处理器并由处理器执行的一个实体;

    由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。

    对应用程序来说,进程就像一个大容器。在应用程序被运行后,就相当于将应用程序装进容器里了,

    你可以往容器里加其他东西(如:应用程序在运行时所需的变量数据、需要引用的DLL文件等),当应用程序被运行两次时,容器里的东西并不会被倒掉,

    系统会找一个新的进程容器来容纳它。


    动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。  

     并发性:任何进程都可以同其他进程一起并发执行  

     独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;   

    异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进  

     结构特征:进程由程序、数据和进程控制块三部分组成。   多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变

    一般Windows有若干个用户,有的是Administator,有的是自定义的,进程都有用户创建的标识,我们如何将一个由自己的用户例如yincheng创建的进程,改成Administator的进程,以便获得更高的权限呢,

    请见代码注释与讲解

     

     

     

    #include "stdafx.h"
    #include "windows.h"
    #include <process.h>
    #include <Tlhelp32.h>
    #include <psapi.h>
    
    #include <tlhelp32.h> 
    #pragma  comment (lib,"psapi")
    BOOL EnableDebugPriv()
    {
    	HANDLE hToken;
    	LUID sedebugnameValue;
    	TOKEN_PRIVILEGES tkp;
    
    	if ( ! OpenProcessToken( GetCurrentProcess(),
    		TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) )
    	{
    
    		return FALSE;
    	}
    
    	if ( ! LookupPrivilegeValue( NULL, SE_DEBUG_NAME, &sedebugnameValue ) )
    	{
    
    		CloseHandle( hToken );
    		return FALSE;
    	}
    
    	tkp.PrivilegeCount = 1;
    	tkp.Privileges[0].Luid = sedebugnameValue;
    	tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    
    	if ( ! AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof tkp, NULL, NULL ) )
    	{
    
    		return FALSE;
    	} 
    	CloseHandle( hToken );
    	return TRUE;
    }
    
    
    HANDLE GetProcessHandle(LPSTR szExeName)  
    
    {  
    
    	PROCESSENTRY32 Pc = { sizeof(PROCESSENTRY32) };  
    
    	HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);  
    
    	if(Process32First(hSnapshot, &Pc)){  
    
    		do{  
    
    			if(!stricmp(Pc.szExeFile, szExeName)) {   //返回explorer.exe进程的PID
    				printf("explorer's PID=%d\n",Pc.th32ProcessID);
    				return OpenProcess(PROCESS_ALL_ACCESS, TRUE, Pc.th32ProcessID);  
    
    			}  
    
    		}while(Process32Next(hSnapshot, &Pc));  
    
    	}  
    
    
    
    	return NULL;  
    }
    
    
    
    int impuser(TCHAR cmdline[256])
    {
    	HANDLE hToken;
    	HANDLE   hExp   = GetProcessHandle("calc.EXE");   
    	if(hExp   ==   NULL) 
    		return   FALSE;   
    
    	OpenProcessToken(hExp,TOKEN_ALL_ACCESS,&hToken);   
    	if(hToken   ==   NULL)   
    		return   FALSE;   
    	STARTUPINFO si; 
    	PROCESS_INFORMATION pi; 
    	ZeroMemory(&si,   sizeof(STARTUPINFO));   
    	si.cb                 =   sizeof(STARTUPINFO);   
    	si.lpDesktop   =   "winsta0\\default";
    	si.wShowWindow = SW_SHOW;
    	si.dwFlags=STARTF_USESHOWWINDOW;   
    
    	TCHAR   szParameter[256]   =   "/c ";
    	lstrcat(szParameter,cmdline);
    	printf("szParameter=%s\n",szParameter);
    
    	char path[MAX_PATH];
    	GetSystemWindowsDirectory(path,MAX_PATH); 
    	lstrcat(path,"\\system32\\cmd.exe"); 
    
    	if(CreateProcessAsUser(hToken,(char *)path,szParameter,NULL,
    		NULL,FALSE,CREATE_DEFAULT_ERROR_MODE,NULL,NULL,&si,&pi))   //以administrator用户身份执行程序,CREATE_NO_WINDOW,CREATE_NEW_CONSOLE,CREATE_DEFAULT_ERROR_MODE
    	{   
    		printf("CreateProcessAsUser sucessed!%d\n",GetLastError());
    		CloseHandle(pi.hProcess);   
    		CloseHandle(pi.hThread);   
    	}
    	return 0;
    }
    
    int main() 
    { 
    	impuser("regedit");
    	return 0;
    }
    


     

    展开全文
  • Windows 10后台进程运行python代码

    千次阅读 2018-10-11 16:41:01
    #1.安装服务 python PythonService.py install   #2.让服务自动启动 ...#3....#4....#5....#6....打包python代码为exe文件 参考链接 ...PythonService.py 为你编写的python代码程序 运行必须为管理员的身份运行

    #1.安装服务

    python PythonService.py install

     

    #2.让服务自动启动

    python PythonService.py --startup auto install

     

    #3.启动服务

    python PythonService.py start

     

    #4.重启服务

    python PythonService.py restart

     

    #5.停止服务

    python PythonService.py stop

     

    #6.删除/卸载服务

    python PythonService.py remove

     

     

    参考链接https://www.cnblogs.com/dcb3688/p/4496934.html

    打包python代码为exe文件 参考链接 https://blog.csdn.net/xiaopangxia/article/details/47208069

    PythonService.py 为你编写的python代码程序

    运行必须为管理员的身份运行

    展开全文
  • Windows上根据进程PID获取其可执行文件的路径,是一个常见的问题。通常我们采用广为人知的API——GetModuleFileNameEx。此函数兼容性极佳,最低支持版本为Windows2000,在许多场合它都工作正常。于是我也在代码中...

    在Windows上根据进程PID获取其可执行文件的路径,是一个常见的问题。通常我们采用广为人知的API——GetModuleFileNameEx。此函数兼容性极佳,最低支持版本为Windows2000,在许多场合它都工作正常。于是我也在代码中理所应当的使用了它。

    忽然某时,我在日志中发现这厮留了一句Error:GetModuleFileNameEx fail, error code is 299。MSDN告诉我这句:Only part of a ReadProcessMemory or WriteProcessMemory request was completed。亲,这是什么意思?MSDN的错误解释有时搞得人真是一头雾水,还是先问问度娘(度娘不行了,再问谷歌)。查得,当我们调用GetModuleFileNameEx函数时,为了获得指定进程的全路径,它内部需要访问进程的PEB头。而64位进程的PEB头地址是保存在64位长度的地址中的,32位进程是保存在32位长度的地址中的,当32位进程访问64位进程的PEB头的时候,采取的是截断访问——只取低32位地址。于是GetModuleFileNameEx就有时正确,有时错误了。日志的主人刚好是个32位进程,也正好跑在了64位系统上。这个Error就这么被触发了。如果编译成64位进程,问题当然就不会存在,可是现实就是不那么让人如愿。
    信念——问题的解决是必须的、一定的,只是时间长短而已。
    既然上面那条路不通了,就得找另外的路。我不知道,我忘了我是怎么找到NtQueryInformationProcess这个函数的。这是个内核函数,VC2008的MSDN用醒目的字体写下NtQueryInformationProcess may be altered or unavailable in future versions of Windows。所以用起来总是让人有些担心。但是我还是用他了,因为我在需要的平台上验证了他的正确性,x86、x64都没问题。我需要着重说一下的是,这个函数获取的进程的可执行文件的路径的驱动器部分是个内核使用的名字,就像\Device\HarddiskVolume1,于是就得找办法把它转换成盘符。不巧的是Windows应用层并没有直接把内核路径转换成应用层常见的路径的函数。网上搜了一下,大家都是利用GetLogicalDriveStringsW获取所有盘符,然后用QueryDosDeviceW把盘符对应的内核设备名得出来,最后把NtQueryInformationProcess得到的路径名中的驱动器部分替换掉。好像没有其它办法,那么就这样干吧。自测,情况良好。提交之。
    这个方法良好的运行了一段时间,又有一处也是这个问题,本来我应该直接把代码复制过去,但是我在无意中发现了另外的解决办法:GetProcessImageFileName。这个函数也可以良好的获取32位进程和64位进程的路径,无论使用它的是32位进程还是64位进程,它所返回的路径的驱动器部分也跟NtQueryInformationProcess一样,是个内核设备名,也需要转换。这个函数是应用层的,没有unavailable的风险,唯一的缺憾就是它的最低支持平台是Windows2003,不过对于我来说已经足够了。于是这次我使用了这个函数。另外在MSDN论坛有人这样建议(看图比较醒目,直接):

    后面两个函数,虽然很好,但是要求太高——平台最低是Windows2008。
    这次的方法也是良好的运行了一段时间。
    又是忽然某时,日志出现了Error,是由于前面某处获取到的进程路径名为空。此时已经严重影响到了产品业务,我必须细细的看。没有错误,只是获取到的路径为空?在整个获取路径过程中,如果获取的那几个函数出问题了,一定会留下“罪证”——错误日志,但是现在没有,那么问题只能出现在转换路径名处。之前我并没有认为这个地方会出问题,所以日志不多。还好问题环境一直存在,并且留了快照,可以让我随意折腾。果断丰富日志,调试。后来发现是QueryDosDeviceW出了问题。在问题机子上,用WinObj工具查看符号链接,C盘链接到\Device\HarddiskVolume1,这也是WinObj获取到的;E盘链接到\Device\HarddiskDmVolumes\Ju-6eb2196e4450Dg0\Volume1,QueryDosDeviceW获取到的也是这个,可是这个又链接到了\Device\HarddiskDmVolumes\PhysicalDmVolumes\BlockVolume1,下面再没有链接了,而用GetProcessImageFileName获取到的驱动器部分是后者,于是没办法替换掉,因为无法匹配到任何一个由QueryDosDeviceW获取到的内核设备名。然后由于我的特殊处理,会认为这种情况获取失败了,返回一个空字符串路径,接着上面的Error就被触发了。那么C盘和E盘有什么区别呢?


    啊哈,很明显的区别:磁盘1是动态磁盘。问题很可能就在这。于是我又在C盘下和E盘下作了实验,发现在C盘下的进程,都能按照以前的方法获取,E盘下的都不行。多加了几个动态磁盘,也作了实验。然后确定了问题是动态磁盘引起的。网上查了会动态磁盘,没什么有用的信息。也查不到如何解决这种问题。过了好久,感觉不会再有办法了,比较郁闷。由于这个问题对于我们的产品来说可以规避掉,于是就暂时规避了。
    过了些时日,又出现了同样的反馈,然后这个问题的严重性被提升了——必须解决。
    还是一个信念——问题的解决是必须的、一定的,只是时间长短而已。
    QueryDosDeviceW这条路看来是走不通了,那么GetProcessImageFileName也就不行了。想想还有其它办法吗?自己的脑子不够用,难道别人的脑子也不够用吗?查呗。
    在微软的某个网页内,一个评论让我感觉到得救了,那人说可以用wmi获取进程路径。赶紧在命令行下用wmic命令测试了下,工作正常,于是又搭了一个问题环境,测试,OK,可以正常工作,完全不受动态磁盘什么的影响。立马写了一段代码,通过COM接口使用wmi,测试,也OK。Good,Bug即将Fixed。
    最后的修复方案是:先用GetModuleFileNameEx获取,若失败了,再用GetProcessImageFileName,若还是失败,再用wmi。
    至此,问题解决。


    在上面的过程中,还有几个问题,我并没有考虑,到写这篇文章的时候才意识到:
    1. Wmi可以做很多事,而且看起来更方便了,而这些事都有对应的API可以完成,但是到现在为止,很少见到有人广泛使用wmi——也许是我见到的代码很少——都用的是API,不知道wmi有没有什么不好的地方。我知道wmi也才不多时,并没有深入去了解。
    2. NtQueryInformationProcess是否存在GetProcessImageFileName的问题?

    展开全文
  • 错误代码 值 说明---------------------------------------------------------------------------ERROR_INSTALL_SERVICE_FAILURE 1601 无法访问 Windows 安装程序 服务。请与技术支持人员联系, 确认 ...
  • 我们进行系统级别的安全监控的时候,防范木马的时候,经常需要进行远程代码注入执行执行步骤如下1. 提升进程权限,如果权限不够的话,很容易造成 OpenProcess 失败;2. 确定你的宿主进程,即你所要注入代码进程,...
  • Windows进程

    万次阅读 2020-06-23 21:46:48
    进程的创建 BOOL CreateProcess( LPCTSTR lpApplicationName, // name of executable module LPTSTR lpCommandLine, // command line string 命令行参数 LPSECURITY_ATTRIBUTES ...
  • Windows进程管理

    千次阅读 2018-05-30 22:59:16
    (2)通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解 Windows 进程的“一生”。 (3)通过阅读和分析实验程序,学习创建进程、观察进程、终止进程以及父子...
  • 终止可执行(exe)程序 代码(C++)本文地址:http://blog.csdn.net/caroline_wendy终止可执行(exe)程序, 首先遍历进程, 找到进程名称对于的进程ID号, 然后根据进程ID, 终止进程.示例代码: 包括遍历进程代码, 和关闭代码....
  • JAVA代码执行Windows控制台命令

    千次阅读 2017-12-09 15:17:38
    有些时候我们用java编写程序时会需要系统的进程或者其他程序的运行来支持项目的需求,比如关闭打开某些进程,或者打开其他的某个应用程序,一般会使用Windows的cmd控制台命令来实现,同样的,在java代码中,也有相应...
  • java动态执行代码或者第三方程序并返回pid,杀掉进程 使用java动态执行Java代码或者调用第三方软件,如下代码即可 Process child = Runtime.getRuntime().exec(cmd); 只要写好cmd命令即可,如何同时返回进程的...
  • windows进程单例

    千次阅读 2017-03-12 18:40:58
    windows进程单例有时候需要让进程单例执行防止多个实例导致异常,windows下可以使用系统事件来实现,比如Event、Mutex等,Event和Mutex在创建的时候如果对象已存在, GetLastError会返回ERROR_ALREADY_EXISTS...
  • windows系统环境下 ,通过进程名称查看该进程是否存在,存在的话 taskkill结束进程。 public class ProcessUtil { private static final Log logger = LogFactory.getLog(ProcessUtil.class); ...
  • 原文地址:http://blog.csdn.net/morewindows/article/details/8683519欢迎关注微博:http://weibo.com/MoreWindows 调整进程当前目录为程序可执行文件所在目录是个非常实用的方
  • Windows服务进程的创建

    千次阅读 2010-08-31 14:44:00
    Windows服务进程的创建
  • Windows守护进程的一种简单实现

    万次阅读 2016-05-13 14:51:54
    一讲到守护进程,很多人都想到了Linux系统,确实在Windows上这个说的比较少。今天上午群里有个朋友问我了下Windows下守护进程的实现问题,我想了想,简单用C++写了个小例子,用来实现系统开机自启动(注册表启动),...
  • Windows创建进程

    千次阅读 2012-08-03 16:42:40
     如果被创建的进程是一个MS-DOS或16位Windows为基础的应用程序,lpCommandLine参数应该是一个执行文件的文件名作为第一个要素的绝对路径,因为这样做可以使32位Windows程序工作的很好,这样设置lpCommandLine...
  • Windows下如何枚举所有进程 Posted on 13:37:00 by 晓月 and filed under Coding, Windows, Windows Mobile 要编写一个类似于 Windows 任务管理器的软件,首先遇到的问题是如何实现枚举所有进程。暂且不考虑进入核...
  • windows查看进程内存使用记录

    万次阅读 2012-12-07 19:02:21
    当写完一个工程,我们往往都会需要去check一下该工程存不存在内存泄露问题。 如果有内存泄露问题的话,那么若程序的主循环次数越多,数据越大,...执行时间的增加而增加,从而来判断该工程是否存在内存泄露问题(当然
  • Windows进程编程

    万次阅读 2008-02-04 12:10:00
    一、进程的概念 进程是是一个正在运行的程序的实例(飘~~~),是系统分配资源的单位(线程是执行的单位),包括内存,打开的文件、处理机、外设等,进程由两部分组成: 1、进程的内核对象:即我们通常所讲的PCB...
  • Windows进程控制

    千次阅读 2016-07-14 19:30:39
    Windows系统中,应用程序都以进程的形式存在于内存中。当运行一个程序的时候,操作系统就会将这个程序装入内存,并分配各种运行程序所需的资源,为进程创建主线程。 系统也提供了任务管理器,可供我们使用。管理...
  • windows进程间通信

    千次阅读 2014-10-18 08:32:03
    摘 要: 随着人们对应用程序的要求越来越高,单进程应用在许多场合已不能满足人们的要求。编写多进程/多线程程序成为现代程序设计的一个重要特点,在多进程程序设计中,进程间的通信是不可避免的。Microsoft Win32...
  • windows 启动后台进程
  • Windows进程通信API总结

    万次阅读 多人点赞 2015-08-30 20:16:25
    在一个大型的应用系统中,往往需要多个进程相互协作,进程间通信(IPC,Inter Process Communication)就显得比较重要了。在Linux系统中,有很多种IPC机制,比如说,信号(signal)、管道(pipe)、消息队列(message queue)...
  • windows编程 进程的创建销毁和分析

    千次阅读 2018-11-27 13:35:20
    Windows程序设计:进程 ...• 另一个是地址空间,在地址空间囊括了所有可执行模块和动态链接库的代码和数据。动态内存分配的空间也在其中,典型代表是线程堆栈和堆内存分配。 1进程与线程 进...
  • 进程

    万次阅读 2021-05-25 14:29:00
    什么是多任务二、实现多任务的方式:示例1 一般情况下执行唱歌、跳舞示例2 单线程执行函数示例3 多线程执行函数示例4多线程执行唱歌、跳舞1示例5多线程执行唱歌、跳舞2三、什么是进程1.什么是进程?2.进程的状态3.单...
  • Windows编程之双进程守护

    千次阅读 2017-12-26 20:25:39
    Windows编程之双进程守护Windows编程之双进程守护 需求分析 设计原理 相关函数 设计详细 方法1 方法2 项目测试情况 方法1 方法2 总结 需求分析设计实现双进程守护程序,当两个进程同时运行时,关闭其中任意一个,另...
  • Windows进程编程 .

    千次阅读 2013-07-08 23:58:37
     进程是是一个正在运行的程序的实例(飘~~~),是系统分配资源的单位(线程是执行的单位),包括内存,打开的文件、处理机、外设等,进程由两部分组成:  1、进程的内核对象:即我们通常所讲的PCB(进程控制块)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 274,410
精华内容 109,764
关键字:

windows以子进程执行代码