首页 > 解决方案 > 在子进程中运行的 C 程序的标准输出未显示在 EC2 实例上

问题描述

我正在运行一个 Python 服务,该服务在一个子进程中运行一个 C 程序。当我在笔记本电脑上本地运行 C 程序时,它的标准输出(程序中的 printf 语句)会实时显示,但在 EC2 实例(Linux AMI)上运行时不会显示。

我看到创建了子进程的日志,但之后什么也没有。

关于为什么会发生这种情况的任何建议?这个 C 程序运行了很长时间,我需要查看输出以进行调试。

编辑:

根据要求,我正在添加更多上下文和示例命令:

编译 C 文件:

subprocess.call(["gcc", "cfile.c", "-ocfile", "-lm","-mcmodel=medium"])

跑步:

subprocess.call(["./cfile", str(args[0])], stdin=sys.stdin)

当我在我的 Macbook 上本地运行它时,它会运行“cfile”并在终端上打印所有 printf 语句。

在此处输入图像描述

但是,当我在 Linux EC2 实例上运行它时,它运行但不打印 printf 语句,如图所示。

这是因为当它在 EC2 上运行时,我已经以 ec2-user 身份登录,但它为 root 用户运行?

标签: cpython-3.xgccamazon-ec2subprocess

解决方案


推荐阅读