コード例 #1
0
ファイル: openbsd.c プロジェクト: ColeJackes/pcp
/*
 * Set up the agent if running as a daemon.
 */
int
main(int argc, char **argv)
{
    int			c, err = 0;
    int			sep = __pmPathSeparator();
    pmdaInterface	dispatch;
    char		mypath[MAXPATHLEN];

    isDSO = 0;
    __pmSetProgname(argv[0]);
    __pmGetUsername(&username);

    snprintf(mypath, sizeof(mypath), "%s%c" "openbsd" "%c" "help",
		pmGetConfig("PCP_PMDAS_DIR"), sep, sep);
    pmdaDaemon(&dispatch, PMDA_INTERFACE_5, pmProgname, OPENBSD,
		"openbsd.log", mypath);

    while ((c = pmdaGetOpt(argc, argv, "D:d:i:l:pu:U:6:?", &dispatch, &err)) != EOF) {
	switch(c) {
	case 'U':
	    username = optarg;
	    break;
	default:
	    err++;
	}
    }
    if (err)
	usage();

    pmdaOpenLog(&dispatch);
    openbsd_init(&dispatch);
    pmdaConnect(&dispatch);
    pmdaMain(&dispatch);
    exit(0);
}
コード例 #2
0
struct and_procent *openbsd_getfirst ()
{
    char errmsg [_POSIX2_LINE_MAX];
    if (!openbsd_kvm) {
        openbsd_kvm = kvm_openfiles(NULL,NULL,NULL,O_RDONLY,errmsg);
        if (!openbsd_kvm) {
            and_printf(0,"KVM: cannot open (\"%s\"). Aborting.\n",errmsg);
            abort();
        }
        openbsd_init();
    }
    openbsd_pt = kvm_getprocs(openbsd_kvm,KERN_PROC_ALL,0,&openbsd_nproc);
    if (!openbsd_pt) {
        and_printf(0,"KVM: cannot retrieve process table. Aborting.\n");
        abort();
    }
    openbsd_next = 0;
    return openbsd_getnext();
}