void CatchMonitee()
{
DIR* procDir;
struct dirent* entry;
g_config.hitA = 0;
g_config.hitB = 0;
procDir = opendir( "/proc" );
while( (entry = readdir( procDir )) != NULL )
{
int valid;
int i;
valid = 1;
for( i = 0; entry->d_name[i] != ' '; i++ )
{
if( entry->d_name[i] < '0' || entry->d_name[i] >
'9' )
{
valid = 0;
break;
}
}
if( 1 == valid )
{
char entryName[64] = "/proc/";
char target[TargetLen] = "";
char* shortname = NULL;
/*must be init, readlink do not append null terminte*/
strcat( entryName, entry->d_name );
strcat( entryName, "/exe" );
memset( target, 0, TargetLen );
readlink( entryName, target, sizeof(target) );
if( strlen(target) == 0 )
continue;
shortname = basename( target );
if( ! g_config.hitA && strstr( g_config.moniteePathA,
shortname ) != NULL )
{
g_config.hitA = 1;
g_monitee[0] = atoi( entry->d_name );
} else if( ! g_config.hitB && strstr(
g_config.moniteePathB, shortname ) != NULL ) {
g_config.hitB = 1;
g_monitee[1] = atoi( entry->d_name );
}
if( g_config.hitA && g_config.hitB )
break;
}
}
if( 0 == g_config.hitA )
g_monitee[0] = 0;
if( 0 == g_config.hitB )
g_monitee[1] = 0;
closedir( procDir );
}
这里是监控两个进程,自己改吧