⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 load.c

📁 watchdog source watchdog source
💻 C
字号:
/* $Header: /cvsroot/watchdog/watchdog/src/load.c,v 1.2 2006/07/31 09:39:23 meskes Exp $ */#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <errno.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include "extern.h"#include "watch_err.h"#if USE_SYSLOG#include <syslog.h>#endifint check_load(void){    int avg1, avg5, avg15;    char buf[40], *ptr;    /* is the load average file open? */    if (load == -1 || maxload1 == 0 || maxload5 == 0 || maxload15 == 0)	return (ENOERR);    /* position pointer at start of file */    if (lseek(load, 0, SEEK_SET) < 0) {	int err = errno;#if USE_SYSLOG	syslog(LOG_ERR, "lseek /proc/loadavg gave errno = %d = '%m'", err);#else				/* USE_SYSLOG */	perror(progname);#endif				/* USE_SYSLOG */	if (softboot)	    return (err);	return (ENOERR);    }    /* read the line (there is only one) */    if (read(load, buf, sizeof(buf)) < 0) {	int err = errno;#if USE_SYSLOG	syslog(LOG_ERR, "read /proc/loadavg gave errno = %d = '%m'", err);#else				/* USE_SYSLOG */	perror(progname);#endif				/* USE_SYSLOG */	if (softboot)	    return (err);	return (ENOERR);    }    /* we only care about integer values */    avg1 = atoi(buf);    /* if we have incorrect data we might not be able to find */    /* the blanks we're looking for */    ptr = strchr(buf, ' ');    if (ptr != NULL) {	avg5 = atoi(ptr);	ptr = strchr(ptr + 1, ' ');    }    if (ptr != NULL)	avg15 = atoi(ptr);    else {#if USE_SYSLOG	syslog(LOG_ERR, "/proc/loadavg does not contain any data (read = %s)", buf);#else				/* USE_SYSLOG */	perror(progname);#endif				/* USE_SYSLOG */	if (softboot)	    return (ENOLOAD);	return (ENOERR);    }#if USE_SYSLOG    if (verbose && logtick && ticker == 1)	syslog(LOG_INFO, "current load is %d %d %d", avg1, avg5, avg15);#endif				/* USE_SYSLOG */    if (avg1 > maxload1 || avg5 > maxload5 || avg15 > maxload15) {#if USE_SYSLOG	syslog(LOG_ERR, "loadavg %d %d %d is higher than the given threshold %d %d %d!", avg1, avg5, avg15,	       maxload1, maxload5, maxload15);#endif				/* USE_SYSLOG */	return (EMAXLOAD);    }    return (ENOERR);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -