summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 7f32361)
raw | patch | inline | side by side (parent: 7f32361)
author | Ton Voon <tonvoon@users.sourceforge.net> | |
Fri, 31 Jan 2003 18:40:40 +0000 (18:40 +0000) | ||
committer | Ton Voon <tonvoon@users.sourceforge.net> | |
Fri, 31 Jan 2003 18:40:40 +0000 (18:40 +0000) |
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@277 f882894a-f735-0410-b71e-b25c423dba1c
plugins/check_procs.c | patch | blob | history |
diff --git a/plugins/check_procs.c b/plugins/check_procs.c
index 05318b6a49a03233168d535e86528148d833d18c..755ed8609814b3aefcd5dc7787bf1ea26321bc7c 100644 (file)
--- a/plugins/check_procs.c
+++ b/plugins/check_procs.c
char *args = "";
char *fmt = "";
char tmp[MAX_INPUT_BUFFER];
+const char *zombie = "Z";
int
main (int argc, char **argv)
int found = 0; /* counter for number of lines returned in `ps` output */
int procs = 0; /* counter for number of processes meeting filter criteria */
int pos; /* number of spaces before 'args' in `ps` output */
+ int cols; /* number of columns in ps output */
int result = STATE_UNKNOWN;
fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process);
while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) {
- if (
#ifdef USE_PS_VARS
- sscanf (input_buffer, PS_FORMAT, PS_VARLIST) >= 4
+ cols = sscanf (input_buffer, PS_FORMAT, PS_VARLIST);
#else
- sscanf (input_buffer, PS_FORMAT, procstat, &procuid, &procppid, &pos,
- procprog) >= 4
+ cols = sscanf (input_buffer, PS_FORMAT, procstat, &procuid,
+ &procppid, &pos, procprog);
#endif
- ) {
+ /* Zombie processes do not give a procprog command */
+ if ( cols == 3 && strstr(procstat, zombie) ) {
+ strcpy(procprog, "");
+ cols = 4;
+ }
+ if ( cols >= 4 ) {
found++;
resultsum = 0;
asprintf (&procargs, "%s", input_buffer + pos);
#endif
if (options == resultsum)
procs++;
+ }
+ /* This should not happen */
+ else if (verbose) {
+ printf("Not parseable: %s", input_buffer);
}
}