c - 在子进程中运行的 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 用户运行?
解决方案
推荐阅读
- python - 基于关键比较两个数据帧
- c# - Winform 应用程序为名称为“程序”的数据库表引发错误
- google-drive-api - googleapi:错误 403:超出速率限制,rateLimitExceeded
- python - 使用python求和并追加2个文件的输入
- python - 如何在匹配列值上垂直合并数据框
- reactjs - 有人可以解释为什么我不应该直接更新 React `context` 中的值吗?
- sql-server - 如何返回一个依赖于另一个值的值?
- xml - 无法插入以下 XML 节点 VB.net
- linux - 从很长的行中提取多个子字符串
- ruby - Authenticate_with_http_basic 块未执行