如何启动后台shell或内核(例如python),连接到它并检索outpu

2024-09-25 04:29:42 发布

您现在位置:Python中文网/ 问答频道 /正文

这看起来很明显,但经过大量的搜索,还是找不到合适的搜索词来得到答案。搜索“连接到python内核”之类的内容时,只会出现一页又一页关于Jupyter和IPython的内容。你知道吗

猛击

我找到了this,它使用了一个协进程。你知道吗

我的理想是:

create_named_process proc1
create_named_process proc2

然后someohow向proc1发送命令并获取输出,然后向proc2发送命令并获取输出。然后用更多的命令重复一遍。你知道吗

Python

我确实找到了Pythonsubprocess和bash子shell。但不知道如何让它们在后台运行并连接到它们。例如,我可以

process = subprocess.Popen(['your_background_command'])
stdoutdata, stderrdata = process.communicate()

但是我认为如果我终止了启动子进程的进程,那么子进程就会死。(一位评论人士说,使用Shell=True将使进程保持活动状态,但不确定接下来如何访问它。他们删除了评论)。你知道吗

另外,如何向进程传递更多命令?文件里没有这样的。你知道吗

注意此帖子包含编辑内容。你知道吗


Tags: 答案命令内容进程createipython评论jupyter
1条回答
网友
1楼 · 发布于 2024-09-25 04:29:42

在搜索中我不了解您的内核,但是您似乎缺少了一些关于bash stdio/stderr处理的基本知识。你知道吗

一个进程(通常)有3个标准io流:

  • 标准输入
  • 标准输出
  • 标准误差

您可以使用管道(|)或文件(使用<><<>>)重定向所有这些IO流。例如:

ls -l | grep "r-x" | sed 's/^.*:...//' > 5_files.list

您可以使用fifo代替普通文件:

mkfifo fifootje
tail -f fifootje | grep  line-buffered "r-x"  
ls -l > fifootje

或者,用你的指挥思想:

#!/bin/bash
mkfifo fifootje
while read line ; do
    case "$line" in
    (a) ls /tmp ;;
    (b) ls /var ;;
    (*) echo 'only a or b please' ;;
    esac
done

然后将ab(每行一个)回送到fifo。你知道吗

有帮助吗?你知道吗

相关问题 更多 >