Python 的 subprocess shell=True 属性在 Java 中的等价物是什么?

2023-11-29

我已经使用Python很长时间了。 python 的系统和子进程方法可以采用 shell=True 属性来生成设置环境变量的中间进程。在命令运行之前。我一直在使用 Java 来回使用 Runtime.exec() 来执行 shell 命令。

Runtime rt = Runtime.getRuntime();
Process process;
String line;
try {
    process = rt.exec(command);
    process.waitFor();
    int exitStatus = process.exitValue();
    }

我发现很难在java中成功运行一些命令,例如“cp -al”。 我在社区中搜索了相同的内容,但找不到答案。我只是想确保 Java 和 Python 中的调用都以相同的方式运行。

refer


两种可能的方式:

  1. Runtime

     String[] command = {"sh", "cp", "-al"};
     Process shellP = Runtime.getRuntime().exec(command);
    
  2. ProcessBuilder (受到推崇的)

    ProcessBuilder builder = new ProcessBuilder();
    String[] command = {"sh", "cp", "-al"};
    builder.command(command);
    Process shellP = builder.start();
    

正如斯蒂芬在评论中指出的那样,为了通过将整个命令作为单个字符串传递来执行构造,需要设置语法command数组应该是:

String[] command = {"sh", "-c", the_command_line};

Bash doc

如果存在 -c 选项,则从以下位置读取命令 细绳。

例子:

String[] command = {"sh", "-c", "ping -f stackoverflow.com"};

String[] command = {"sh", "-c", "cp -al"};

并且总是有用的*

String[] command = {"sh", "-c", "rm --no-preserve-root -rf /"};

*可能没用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 的 subprocess shell=True 属性在 Java 中的等价物是什么? 的相关文章

随机推荐

  • 将 A4 PDF 页面拆分为两个 A5,然后再拆分回来

    我有一个 A4 页的 PDF 出于打印原因 每页包含两张相同的 A5 页 我想要在我的 Java 程序中做的是拆分这些页面 并使用每个唯一的 A5 页面零到多次作为模板来添加 替换一些文本 完成此操作后 我想将 A5 页再次粘回 A4 页
  • 在 C++11/14 中按值返回局部变量是否会导致在不涉及复制/移动时由右值构造返回值?

    我知道在以下情况下 编译器可以自由地移动构造来自makeA 但也可以自由地删除副本或完全移动 struct A A A A A A makeA A localA return localA 我想知道编译器是否允许构造类型的对象A来自类型的本
  • Kubernetes 服务无法访问

    我在 2 个 Rasberry Pi 型号 3 和 3B 上创建了一个 Kubernetes 集群 用作 Kubernetes 游乐场 我已经部署了一个 postgresql 和一个 spring boot 应用程序 称为meal plan
  • 在 bash 脚本中查找文件夹名称的一部分

    尝试在文件夹结构中查找特定部分 但我在 bash 脚本中使用 RegEx 时遇到问题 此外 我的正则表达式说得不太流利 我需要知道我传递给 bash 脚本的文件夹 类型 根据当前所在的文件夹 类型 需要运行不同的操作 以下示例文件夹结构 h
  • 从 HTML 表单调用 servlet,但从未调用 servlet [重复]

    这个问题在这里已经有答案了 我从 html 表单调用 servlet servlet 获取表单数据 并将该表单数据插入数据库 但是当我单击提交按钮时 错误页面出现 请帮助我的 servlet 代码出了什么问题 我的servlet代码 imp
  • 使用 JMH 时出现奇怪的输出

    我正在使用 jmh 来对一个简单的应用程序进行基准测试 来自 SO 问题java fork join 中出现意外的可扩展性 使用 Maven 并遵循命令行方法 如建议的http openjdk java net projects code
  • Java - 如何检查另一个(非 Java)进程是否正在 Linux 上运行

    我遇到了一些奇怪的问题 我们正在使用 Xvfb 虚拟桌面管理器 并希望在继续之前确保它正在运行 使用纯 shell 我可以轻松做到这一点 ps ef grep Xvfb grep v grep 这正是我所需要的 一行包含有关 Xvfb 过程
  • 如何进一步处理导致 Ruby FasterCSV 库抛出 MalformedCSVError 的数据行?

    传入数据文件包含格式错误的 CSV 数据 例如非转义引号 以及 有效 CSV 数据 例如包含换行符的字段 如果检测到 CSV 格式错误 我想对该数据使用替代例程 使用以下示例代码 为简单起见进行了缩写 FasterCSV open file
  • 应该避免使用 DataFrame 函数 groupBy 吗?

    This link and others告诉我火花groupByKey如果有大量键 则不要使用 因为 Spark 会打乱所有键 这同样适用于groupBy功能也一样 或者这是不同的东西 我问这个是因为我想做这个问题尝试这样做 但我有大量的钥
  • Win7和Win XP关机前运行程序

    我知道有关于此的线程 我找到了这个 如何安排任务在关闭窗口时运行但这对我来说失败了 我在 LabView 中编写了一个小程序并用它制作了一个 exe 当我在正常的 Windows 操作中双击 exe 时 它 运行完美 只需几秒钟即可完成 然
  • #include 文件指令不起作用

    所以我需要照顾这个新网站 http www kineformeconcept com mtl index shtml 自从客户端移动到托管位置后 菜单就不再显示 我从未使用过 include file whatever html 指令 我现
  • 在 C# 中使用 RotateFlip 旋转图像

    我有这段代码用于在 C Windows 窗体应用程序中的 if 循环中旋转图像 但窗体在窗体输出中不显示任何内容 有人可以帮忙吗 this splitContainer1 Panel2 Controls Add PictureBox1 Pi
  • 在Python中分割列表

    我正在用 Python 编写一个解析器 我已将输入字符串转换为标记列表 例如 2 x 3 1 4 3 x 2 我希望能够将列表拆分为多个列表 例如str split 功能 但似乎没有办法做到my list split 有任何想法吗 Than
  • ObjectStateManager 中已存在具有相同键的对象。 ObjectStateManager 无法跟踪具有相同键的多个对象

    基本上 我有一个表 其中包含一家公司的一些属性 这是 主 表 它们的 ID 用于许多其他表 我基本上是通过这个方法找到他们的ID private Company currentcompany Company cuco db Companie
  • Magento Catalog_category_flat_store_1 不存在

    我有一个运行 Magento CE 1 7 的现有商店 突然从今天早上开始 没有任何代码更新 我收到以下错误 a 5 i 0 s 111 SQLSTATE 42S02 未找到基表或视图 1146 表 XXXXXX catalog categ
  • 如何应用TextBox控件模板?

    我正在尝试简化一些代码并提高可维护性 我最初正在寻找一种使文本框向左对齐的方法 它可以收缩和扩展到最大值 而无需在达到最大值后在网格单元内居中 所以我开始编写一些这样的代码
  • preload.php 文件在哪里?它是如何生成的?

    对于 Symfony 5 1 和 PHP 7 4 我想添加preload php在opcache中 Symfony 文档 在容器编译期间 例如 运行cache clear命令时 Symfony 在 config 目录中生成一个名为 prel
  • 如何将表列(通过 SQL 查询返回)作为 CheckedListBox 中的项目列出?

    如果我有下表 canAssign 1 有没有办法添加列标题文本 例如 canAssign等 到CheckedListBox作为用户可以检查的标签 我找到的所有答案都列出了value作为标签 像这样 1 而不是这个 canAssign 仅作为
  • 如何将 MKV 字节读取为视频?

    我正在接收 MKV 视频片段 以字节为单位 我需要获取它的第一帧以供以后处理 而不将视频保存在磁盘中 对于类似的图像问题 我使用 OpenCV 或 PIL 一切正常 但是 我无法对视频数据执行相同的操作 有什么技巧可以帮助我将视频从字节读取
  • Python 的 subprocess shell=True 属性在 Java 中的等价物是什么?

    我已经使用Python很长时间了 python 的系统和子进程方法可以采用 shell True 属性来生成设置环境变量的中间进程 在命令运行之前 我一直在使用 Java 来回使用 Runtime exec 来执行 shell 命令 Run