我有一个小的python文件,只输出一个字符串:
#!/usr/bin/env python
print("This is a Test")
我可以从另一个python脚本中调用此python脚本,如下所示:
subprocess.call(['python', 'myPythonFile.py'])
然后我可以在源python程序中看到“这是一个测试”。
但是我想从正在运行的守护程序中调用此脚本,如下所述:https://gist.github.com/andreif/cbb71b0498589dac93cb
当我打电话给
subprocess.call(['python', 'myPythonFile.py'])
在MyDaemon中。运行我看不到输出。
我该怎么做?
答案 0 :(得分:0)
答案 1 :(得分:0)
subprocess.call
可以将其输出发送到文件
tempfile = '/tmp/output.tmp' # better use mktemp
with open( tempfile, 'w') as output:
response = subprocess.call(
['python', 'myPythonFile.py'],
stdout=output,
stderr=output,
)
with open( tempfile, 'r') as output:
# read what happened from output, and decide what to do next
# or perhaps just feed it into your logging system
答案 2 :(得分:0)
守护进程的特征是没有控制终端,因为它与启动守护进程的对象是分离的。根据定义,守护进程未连接到任何控制台。
因此,如果该守护程序运行另一个进程:
我想从正在运行的守护程序中调用此脚本
然后仍然没有控制终端,并且默认情况下标准输出连接到空设备。
您需要安排守护进程将其输出放置在某处。例如,日志文件。
尝试使用the python daemon
library创建守护进程的方法 并指定特定文件(例如,您打开的日志文件)以在守护进程中保持打开状态。