前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java命令执行学习笔记

Java命令执行学习笔记

作者头像
用户1467662
发布2020-08-10 11:04:12
9010
发布2020-08-10 11:04:12
举报
文章被收录于专栏:农夫安全农夫安全

大家都知道java命令执行执行是,Runtime.getRuntime().exec("whoami")

但是具体为啥这么写,我之前一直处于很蒙蔽的状态,接下来本文就是分析为啥命令执行要这么写。【为啥蛤蟆的这么长】

1、首先我们来看一段代码,执行后弹计算器,计算器被吃掉了。。。。

```

代码语言:javascript
复制
public static void main(String[] args) throws Exception
{
 Runtime.getRuntime().exec("calc");

```

2、Runtime.getRuntime().exec("calc"),仔细一看,这段是调用了Runtime中的getRuntime方法,在调用exec方法????

从idea中看exec方法不是本来就在Runtime类中嘛

3、搞事情,直接调用

代码语言:javascript
复制
    public static void main(String[] args) throws Exception
    {
        Runtime run = new Runtime();
        run.exec("calc");
    }

哦豁报错了

原来是这个Runtime的构造方法私有化了。。。。。。

所以不能直接去new出来这个对象。。。。

在接着看getRuntime方法,顿时理解了。。。。

因为私有化了,这个Runtime对象不能直接new出来,因此不能直接调用下面的exec方法。。。。【意思就是我虽然有嫩模,但是我就是不给你,你要经过我的getRuntime方法才能new一个对象,想白嫖可不行。。。】

```

代码语言:javascript
复制
class Runtime{

    private static Runtime currentRuntime = new Runtime();
    public static Runtime getRuntime() {
        return currentRuntime;
    }
}

```

看完上面这个 你就知道整个命令执行过程了,,

Runtime.getRuntime().exec("calc")

Runtime执行getRuntime这个方法,才能new出Runtime这个对象,在去执行calc这个方法。。。。。。。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络安全社区悦信安 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档