linux下C语言编程如何判断一个程序是否运行成功 (结果是一个界面) ?

linux下C语言编程如何判断一个程序是否运行成功 (结果是一个界面) ?,第1张

其实这个问题很简单,不管你用什么语言编写程序,尤其是做应用方面的程序,其表现是相同的对于判定一个程序是否运行成功主要是输入和输出,因为任何程序都要和输入输出打交道,否则程序便没有意义,这里讲的输入和输出是广义的伴随输入输出,有以下几个方面可以作为判定:

1:明确的输入、输出,比如输入输出数据

2:进程序列

3:如有图形界面,当如有图形界面未必表示运行成功

最后:你需要几个因素综合考虑,你写C语言程序,可以使用调试工具(gdb)跟踪

写程序需要慢慢积累经验当然灵感很重要!

C# WinForm判断程序是否已经运行,使程序只能运行一个实例有很多方法。

第一种,通过进程判断是否启动:

[csharp] view plain copy

static class Program

{

/// <summary>

/// 应用程序的主入口点。

/// </summary>

[STAThread]

static void Main()

{

//获取当前进程的ID

int pId = Process.GetCurrentProcess().Id

bool isRun = false

foreach (Process p in Process.GetProcessesByName("CallMaster"))

{

//取得当前程序的进程,进行比较

if (Common.GetPath().ToLower() == p.MainModule.FileName.

#include<windows.h>

#include <stdio.h>

#include "PSAPI.H"

#pragma comment( lib, "PSAPI.LIB" )

BOOL EnablePrivilege(HANDLE hToken,LPCSTR szPrivName)

int main(void)

{

DWORD processid[1024],needed,processcount,i

HANDLE hProcess

HMODULE hModule

char path[MAX_PATH] = "",temp[256]

HANDLE hToken

printf("ShowProcessPath 2.0 with [Process Status API]\n\n")

if ( OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken) )

{

if (EnablePrivilege(hToken,SE_DEBUG_NAME))

{

EnumProcesses(processid, sizeof(processid), &needed)

processcount=needed/sizeof(DWORD)

for (i=0i<processcounti++)

{

hProcess=OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,false,processid[i])

if (hProcess)

{

EnumProcessModules(hProcess, &hModule, sizeof(hModule), &needed)

GetModuleFileNameEx(hProcess, hModule, path, sizeof(path))

>>>>在这里判断是否是你所需要的文件

GetShortPathName(path,path,256)

itoa(processid[i],temp,10)

printf("%s --- %s\n",path,temp)

}

else

printf("Failed!!!\n")

}

}

}

CloseHandle(hProcess)

CloseHandle(hModule)

itoa(processcount,temp,10)

printf("\nProcess Count:%s\n\n",temp)

return 0

}

BOOL EnablePrivilege(HANDLE hToken,LPCSTR szPrivName)

{

TOKEN_PRIVILEGES tkp

LookupPrivilegeValue( NULL,szPrivName,&tkp.Privileges[0].Luid )//修改进程权限

tkp.PrivilegeCount=1

tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED

AdjustTokenPrivileges( hToken,FALSE,&tkp,sizeof tkp,NULL,NULL )//通知系统修改进程权限

return( (GetLastError()==ERROR_SUCCESS) )

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11093240.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存