📄 proc_set.c
字号:
/* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only. * See the file usr/src/LICENSING.NOTICE in this distribution or * http://www.opensolaris.org/license/ for details. */#pragma ident "@(#)proc_set.c 1.4 04/03/26 SMI"#include "libproc.h"#include <alloca.h>#include <string.h>/* * Convenience wrapper to set the cred attributes of a victim process * to a set of new values. Caller must supply a prochandle and a * fully populated prcred structure. */intPsetcred(struct ps_prochandle *Pr, const prcred_t *credp){ int ngrp; int ctlsize; struct { long cmd; prcred_t cred; } *ctlp; if (Pr == NULL || credp == NULL) return (-1); ngrp = credp->pr_ngroups; ctlsize = sizeof (prcred_t) + (ngrp - 1) * sizeof (gid_t); ctlp = alloca(ctlsize + sizeof (long)); ctlp->cmd = PCSCREDX; (void) memcpy(&ctlp->cred, credp, ctlsize); if (write(Pctlfd(Pr), ctlp, sizeof (long) + ctlsize) < 0) return (-1); return (0);}/* * Convenience wrapper to set the zoneid attribute of a victim process to a new * value (only to and from GLOBAL_ZONEID makes sense). Caller must supply a * prochandle and a valid zoneid. */intPsetzoneid(struct ps_prochandle *Pr, zoneid_t zoneid){ struct { long cmd; long zoneid; } ctl; if (Pr == NULL) return (-1); ctl.zoneid = zoneid; ctl.cmd = PCSZONE; if (write(Pctlfd(Pr), &ctl, sizeof (ctl)) < 0) return (-1); return (0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -