返回顶部
首页 > 资讯 > 精选 >如何在 Go 中运行前台或后台 shell 命令
  • 916
分享到

如何在 Go 中运行前台或后台 shell 命令

go语言 2024-02-08 22:02:41 916人浏览 薄情痞子
摘要

PHP小编苹果为您介绍如何在Go中运行前台或后台shell命令。在Go语言中,运行shell命令非常简单。通过使用os/exec包,我们可以轻松地执行各种shell命令,并获取其输出。

PHP小编苹果为您介绍如何在Go中运行前台或后台shell命令。在Go语言中,运行shell命令非常简单。通过使用os/exec包,我们可以轻松地执行各种shell命令,并获取其输出。无论是运行前台命令还是后台命令,Go语言都提供了相应的方法。在本文中,我们将学习如何使用Go语言运行前台或后台shell命令,并探讨一些常见的用例。让我们开始吧!

问题内容

在 go 中,我需要能够从用户运行 shell 命令,并且仅阻止在前台运行的命令(不使用 & 运行),同时检索命令的输出。

例如,在 bash 中我们可以:

#!/bin/bash
while read -p 'enter a command: ' cmd; do
    /bin/sh -c "$cmd" >(sed 's/^/line of output: /')
done

用户可以输入类似sleep 5这样的前台命令; echo hi 会阻塞并且提示不会立即重新出现,或者他们可以输入后台命令,如 { sleep 5;回声嗨; & 并且它不会阻塞,并且当命令在后台运行时,提示符会立即重新出现。

我如何在 go 中重新创建它?这是我的尝试:

package main

import (
    "bufio"
    "os"
    "os/exec"
)

func main() {
    input := bufio.newscanner(os.stdin)
    for {
        print("enter a command: ")
        input.scan()
        cmd := exec.command("/bin/sh", "-c", input.text())
        stdout, err := cmd.stdoutpipe()
        if err != nil {
            panic(err)
        }
        go func() {
            output := bufio.newscanner(stdout)
            for output.scan() {
                println("line of output: " + output.text())
            }
            if output.err() != nil {
                panic(output.err())
            }
        }()
        if err := cmd.start(); err != nil {
            panic(err)
        }
        if err := cmd.wait(); err != nil {
            panic(err)
        }
    }
}

运行 sleep 5; echo hi 会阻塞并且可以工作,但是 { sleep 5;回声嗨; } & 错误:

panic: read |0: file already closed

对于上下文,我将语音控制移植到 go,用户可以在其中配置 runtype 等操作,其中他们的命令通过 shell 运行,并模拟按键以键入输出。用户可以使用后台命令,以便语音控制与命令一起继续,例如,他们可以在说出“菜单”时启动菜单,并且在打开时仍然能够使用语音控制: menu: runtype printf %s\\n 这个那个 | dmenu &

解决方法

将 stdout 设置为命名管道即可实现该行为。

以上就是如何在 Go 中运行前台或后台 shell 命令的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 如何在 Go 中运行前台或后台 shell 命令

本文链接: https://www.lsjlt.com/news/562106.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何在 Go 中运行前台或后台 shell 命令
    php小编苹果为您介绍如何在Go中运行前台或后台shell命令。在Go语言中,运行shell命令非常简单。通过使用os/exec包,我们可以轻松地执行各种shell命令,并获取其输出。...
    99+
    2024-02-08
    go语言
  • CentOS下如何让命令后台运行并在前后台切换
    这篇文章主要介绍了CentOS下如何让命令后台运行并在前后台切换,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在命令结尾加”&”符号可以让命令在后台运行,这时可以看到...
    99+
    2023-06-10
  • 在后台运行Linux命令的方法
    通常情况下,当你在终端运行一个命令,在你开始输入另外一个命令之前,你必须等待当前命令运行结束。这被称为在前台运行命令,或者前台进程。当一个进程在前台运行时,它占用了你的 shell,并且你可以通过输入设备和它进行交互...
    99+
    2022-06-03
    Linux 命令 后台运行Linux 命令
  • Android 判断程序在前台运行还是后台运行
    就简单的一个方法,就不用写什么步骤了: public static boolean Frontdesk(Context context) { ActivityManager...
    99+
    2022-06-06
    后台运行 运行 程序 Android
  • linux如何使用nohup命令使程序在后台运行
    这篇文章主要为大家展示了“linux如何使用nohup命令使程序在后台运行”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux如何使用nohup命令使程序在后台运行”这篇文章吧。在linux...
    99+
    2023-06-13
  • Linux系统中如何将Linux命令放到后台运行
    这篇文章主要介绍了Linux系统中如何将Linux命令放到后台运行,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。“命令 &”,把命令放入后台执行第一种把命令放入后台的...
    99+
    2023-06-28
  • Linux中如何让进程在后台运行
    本篇内容介绍了“Linux中如何让进程在后台运行”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在Linux中,如果要让进程在后台运行,一般情...
    99+
    2023-06-10
  • Linux后台运行命令具体有哪些
    本篇文章为大家展示了Linux后台运行命令具体有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Linux后台运行命令前面介绍了cron和crontab、at这两个命令,后面这里继续介绍&...
    99+
    2023-06-16
  • Android应用中是怎么判断程序是在前台运行还是在后台运行的
    本篇文章为大家展示了Android应用中是怎么判断程序是在前台运行还是在后台运行的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。具体方法如下:public static boolean Frontd...
    99+
    2023-05-31
    android roi
  • linux中mongodb在后台运行进程
    # 方法1:(推荐)# --fork 选项将会通知 mongod 在后台运行/path/to/MongoDB_Dir/bin/mongod --logpath /path/to/file.log --log...
    99+
    2024-04-02
  • win10如何禁止应用在后台运行
    小编给大家分享一下win10如何禁止应用在后台运行,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、打开开始菜单,点击“设置”。二、在Windows设置窗口,打开...
    99+
    2023-06-28
  • Linux中如何关闭终端或实现程序后台运行
    这篇文章主要介绍Linux中如何关闭终端或实现程序后台运行,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!nohup最常用的命令就是【nohup】,从名字就看出是否挂起运行命令,关闭终端或者退出某个账号,进程也继续保持...
    99+
    2023-06-15
  • 如何从Vim中访问shell或者运行外部命令
    这篇文章给大家分享的是有关如何从Vim中访问shell或者运行外部命令的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在 Vim 中执行外部命令有的时候,你可能需要在 Vim 编辑窗口中执行外部的命令。例如,想象一...
    99+
    2023-06-12
  • 怎么在后台运行Linux命令并将进程脱离终端
    这篇“怎么在后台运行Linux命令并将进程脱离终端”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么在后台运行Linux命令...
    99+
    2023-06-28
  • 如何在Node.js后台看程序运行情况
    Node.js 是一种流行的服务端开发语言,它拥有强大的后台功能。在开发过程中,我们常常需要在后台看程序运行情况,以便在出现错误时及时进行调试和修复。本文将介绍如何在 Node.js 后台实现这个功能。什么是后台看程序运行情况后台看程序运行...
    99+
    2023-05-14
  • 如何让Android的service一直在后台运行?
    Service是Android四大组件之一,同时也是四大组件中和Activity最相似的组件,都代表着可执行的程序,他们的区别在于Service一直在后台运行,没有用户界面,一旦被启动就和Activiy一样拥有生命周期,一般来说,需要显示界...
    99+
    2023-06-04
  • 你知道如何在Go容器中运行Shell命令和NPM包吗?
    在Go容器中运行Shell命令和NPM包是一个常见的需求,特别是在开发过程中。本文将介绍如何在Go容器中运行Shell命令和NPM包,并提供相应的演示代码。 一、使用os/exec库运行Shell命令 在Go中运行Shell命令的最简单方法...
    99+
    2023-10-16
    容器 shell npm
  • python如何运行shell命令subprocess
    这篇“python如何运行shell命令subprocess”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python如何运...
    99+
    2023-07-05
  • 怎么在后台运行Linux命令并且将进程脱离终端
    本篇内容主要讲解“怎么在后台运行Linux命令并且将进程脱离终端”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在后台运行Linux命令并且将进程脱离终端”吧!在本指南中,我们将会阐明一个在 ...
    99+
    2023-06-16
  • Linux系统查看后台运行进程命令有哪些
    这篇文章主要介绍Linux系统查看后台运行进程命令有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.jobs查看当前终端后台运行命令 ,终端关闭后无法查看。jobs -l选项可显示当前终端所有任务的PID,jo...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作