unix.java

来自「很棒的web服务器源代码」· Java 代码 · 共 133 行

JAVA
133
字号
// Unix.java// //$Id: Unix.java,v 1.6 2000/08/16 21:37:58 ylafon Exp $// (c) COPYRIGHT MIT and INRIA, 1996.// Please first read the full copyright statement in file COPYRIGHT.html// modified by gisburn (Roland.Mainz@informatik.med.uni-giessen.de)// to work under java 2 (implementing JNI 1.1)package org.w3c.util;/** * Native methods to do some UNIX specific system calls. * This class can be used on UNIX variants to access some specific system * calls. */public class Unix  {    private static final String  NATIVE_LIBRARY = "Unix";    /**     * Are the calls we support really availables ?     */    private static boolean haslibrary = false;    private static Unix    that       = null;    private native int     libunix_getUID(String user);    private native int     libunix_getGID(String group);    private native boolean libunix_setUID(int    uid);    private native boolean libunix_setGID(int    gid);    private native boolean libunix_chRoot(String root);    /**     * Get the UNIX system call manger.     * @return An instance of this class, suitable to call UNIX system     * calls.     */    public static synchronized Unix getUnix() {        if( that == null )  {	    // Load the library:	    try  {		System.loadLibrary( NATIVE_LIBRARY );		haslibrary = true;	    } catch( UnsatisfiedLinkError ex ) {		haslibrary = false;	    } catch( RuntimeException ex ) {		haslibrary = false;	    }	    // Create the only instance:	    that = new Unix();        }        return( that );    }    /**     * Can I perform UNIX system calls through that instance ?     * @return A boolean, <strong>true</strong> if these system calls are     * allowed, <strong>false</strong> otherwise.     */    public boolean isResolved() {        return( haslibrary );    }    /**     * Get the user identifier for that user.     * @return The user's identifier, or <strong>-1</strong> if user was not     * found.     */    public int getUID( String uname ) {        // FIXME: Security check needed here        if( uname == null )	    return( -1 );	return( libunix_getUID( uname ) );    }    /**     * Get the group identifier for that group.     * @return The group identifier, or <strong>-1</strong> if not found.     */    public int getGID( String gname ) {        // FIXME: Security check needed        if( gname == null )	    return( -1 );	return( libunix_getGID( gname ) );    }    /**     * Set the user id for the running process.     * @param uid The new user identifier for the process.     * @exception UnixException If failed.     */    public void setUID( int uid ) 	throws UnixException    {        // FIXME: Security check needed        if( !libunix_setUID( uid ) )	    throw new UnixException( "setuid failed" );    }    /**     * Set the group id for the running process.     * @param gid The new user identifier for the process.     * @exception UnixException If failed.     */    public void setGID( int gid ) 	throws UnixException    {        // FIXME: Security check needed        if( !libunix_setGID( gid ) )	    throw new UnixException( "setgid failed" );    }    /**     * Change the process root, using <code>chroot</code> system call.     * @param root The new root for the process.     * @exception UnixException If failed.     */    public void chroot( String root ) 	throws UnixException    {        if( root == null )	    throw new NullPointerException( "chroot: root == null" );		if( !libunix_chRoot( root ) )	    throw new UnixException( "chroot failed" );    }}

⌨️ 快捷键说明

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