代码有些拙略,能够根据进程名字获取进程的全路径。但是以32位编译的代码不能获取64位进程信息,GetLastError等于299。#include <Windows.h>
#include <TlHelp32.h>
#include <iostream>
#include <conio.h>usingnamespace std;char* GetProcessPath(char* szProcessName)
{PROCESSENTRY32 pe32;pe32.dwSize = sizeof(pe32);HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if (hSnapShot == INVALID_HANDLE_...
进程相关的函数创建一个新的线程
pid_t fork(void);* 失败 -1* 成功,两次返回父进程返回,子进程的id子进程返回0
pid_t getpid(void); //获得当前进程的
pid_t getppid(void); //获得当前进程父进程的id#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>int main()
{printf("Begin ....\n");pid_t pid = fork();if(pid < 0){ perror("fork err");return -1; }else if(pid == 0){ //子进程printf("I am child,pid ...
①、ShellExecute 进行进程的创建,属于 shell api://int iRet = (int)ShellExecute(m_hWnd, _T("open"), _T("NOTEPAD.EXE"), _T("C:\\123.txt"), NULL, SW_SHOW);int iRet = (int)ShellExecute(m_hWnd, _T("open"), _T("C:\\WINDOWS\\NOTEPAD.EXE"), _T("C:\\123.txt"), NULL, SW_SHOW);if (iRet > 32){ MessageBox(_T("执行成功!"));}else{ MessageBox(_T("执行失败!"));} 备注:ShellExecute 函数不仅可以打开文件,还可以打...
最近一直在找共享内存同步的操作,恰好这篇文章有讲解。本文转载:https://blog.csdn.net/bing_bing_bing_/article/details/82875302方便记录,copy了一份。2.进程间的通信2.1进程本章讲解windows平台下,进程间的通信方式。进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是操作系统动态执行的基本单元。简单的说,进程就是一段程序的执行过程。进程和线程:进程是系统动态执行的基本单位,也是系统分配资源的...
#include <Psapi.h>
#include <vector>
BOOL TraversalProcess2(OUT std::vector<DWORD> &vec)
{vec.clear();try{BYTE *pbt = 0;DWORD dwSize = 0, dw = 0x1000;BOOL b = 0;for (; dw < INT_MAX && !b; dw *= 2){if (pbt){delete pbt;pbt = 0;}pbt = new BYTE[dw];if (pbt){b = EnumProcesses((DWORD*)pbt, dw, &dwSize);}}if (pbt && b){DWORD *pdw = (DWORD*)pbt;for (DWORD i = 0; i < dwSize / sizeof(DWORD); ++i){vec.push_b...
1#ifndef PROCESS_LOG_H2#define PROCESS_LOG_H3 4 #include <string>5 #include <sstream>6 #include <cstring>7 8 #include <fcntl.h>9 #include <sys/stat.h>
10 #include <sys/types.h>
11 #include<sys/time.h>
12 #include<unistd.h>
1314using std::string;
1516#define LOG_KIND_FILE_NAME 1
17#define LOG_KIND_FIFO_NAME 2
1819#define LOG_ERROR_OPEN_FILE 1
20#define LOG_ERROR_MKFIFO 2
21#define LOG_ERROR_OPEN_FI...
子进程异步清除 SIGCHLD信号:子进程终止时,向父进程自动发送,编写此信号处理例程,异步清除子进程#include <signal.h>
#include <string.h>
#include <sys/types.h>
#include <sys/wait.h>sig_atomic_t child_exit_status;
extern"C"
{void CleanUp(int sig_num){int status;wait(&status); //清除子进程child_exit_status = status; //存储子进程的状态 }
}int main()
{//处理SIGCHLD信号struct sigactio...
#include <vector>
typedef LONG NTSTATUS;
typedef LONG KPRIORITY;
#define STATUS_SUCCESS ((NTSTATUS) 0x00000000)
#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)
#define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS)0xC0000004L)
typedef struct _CLIENT_ID {HANDLE UniqueProcess;HANDLE UniqueThread;
} CLIENT_ID, *PCLIENT_ID;
typedef struct _SYSTEM_THREAD_INFORMATION {LAR...
原文作者:aircraft原文链接:https://www.cnblogs.com/DOMLX/p/9612820.html LINUX下: 一.服务端代码 下面用了多个close来关闭文件描述符,可能有的小伙伴会有疑惑。。。。我就说一句,创建进程的时候会把父进程的资源都复制 一份,而你这个子进程只需要保留自己需要处理的资源,其他的自然要关闭掉,不然父亲一个儿子一个 待会打起来怎么办 嘿嘿 注意了:就像进程间的通信需要属于操作系统的资源管道来进行,套接字也属于操作...
php扩展中c++单例模式的全局对象实例被生成多个子进程销毁,为啥??在php扩展中是用了一个单例模式的全局对象,当http服务停止时通过日志查看并且打印进程号,发现析构函数被多次调用,并且是在不同的进程里(通过进程号观察)。 为什么会这样! 不是说http服务启动一次 ,我那全局对象就实例化一次吗! 服务停止时怎么会发生这么多怪异的现象!------解决方案--------------------请问你如何知道析构函数被多次调用?另外是不是你...
这个程序是一个命令行程序,返回一个字符串,由php调用。运行一段时间以后,发现有大量的进程驻留。导致系统崩溃。情形如图所示,求大神帮忙分析原因。回复内容:这个程序是一个命令行程序,返回一个字符串,由php调用。运行一段时间以后,发现有大量的进程驻留。导致系统崩溃。情形如图所示,求大神帮忙分析原因。进程内部还有线程在工作,所以进程不会退出
#include <stdio.h> #include <unistd.h>#include <stdlib.h>#include <sys/types.h>#include <arpa/inet.h>#include <string.h>#include <ctype.h>#include <signal.h>#include <sys/wait.h>#include <errno.h>void sigCatchFun(int num){ pid_t wpid ;while((wpid= waitpid(-1,NULL,WNOHANG))>0){printf("sig child OK\n");}} int main(int argc,c...
进程相关的函数
创建一个新的线程
pid_t fork(void);* 失败 -1* 成功,两次返回父进程返回,子进程的id子进程返回0
pid_t getpid(void); //获得当前进程的
pid_t getppid(void); //获得当前进程父进程的id#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>int main()
{printf("Begin ....\n");pid_t pid = fork();if(pid < 0){ perror("fork err");return -1; }else if(pid == 0){ //子进程printf("I am child,pid...
vc++实现内核级进程保护
保护核心代码 #include "ntddk.h"#define NT_DEVICE_NAME L"//Device//ProtectProcess"#define DOS_DEVICE_NAME L"//DosDevices//ProtectProcess"#define IOCTL_PROTECT_CONTROL CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED, FILE_ANY_ACCESS)NTSTATUS DispatchDeviceControl(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp);VOID OnUnload(IN PDRIVER_OBJECT DriverObject);#pra...
vc++进程注入钩子DLL通用模块开源
#include "stdafx.h"#include#define DEF_BUF_SIZE 1024// 用于存储注入模块DLL的路径全名char szDllPath[DEF_BUF_SIZE] = {0} ;// 使用远程线程向指定ID的进程注入模块BOOL InjectModuleToProcessById ( DWORD dwProcessId ){ if ( dwProcessId == 0 ) return FALSE ; // 打开进程 HANDLE hProcess = OpenProcess ( PROCESS_ALL_ACCESS, FALSE, dwProcessId ) ; if ( hProcess == NULL ) ...