相关疑难解决方法(0)

Linux非阻塞fifo(按需记录)

我喜欢按需"记录"节目输出.例如.输出记录到终端,但另一个进程可以随时挂接当前输出.

经典的方式是:

myprogram 2>&1 | tee /tmp/mylog
Run Code Online (Sandbox Code Playgroud)

并按需提供

tail /tmp/mylog
Run Code Online (Sandbox Code Playgroud)

但是,这将创建一个不断增长的日志文件,即使在驱动器空间不足之前不使用它也是如此.所以我的尝试是:

mkfifo /tmp/mylog
myprogram 2>&1 | tee /tmp/mylog
Run Code Online (Sandbox Code Playgroud)

并按需提供

cat /tmp/mylog
Run Code Online (Sandbox Code Playgroud)

现在我可以随时阅读/ tmp/mylog.但是,任何输出都会阻塞程序,直到读取/ tmp/mylog.我喜欢fifo来刷新任何未读回的数据.怎么做?

linux bash logging fifo

32
推荐指数
7
解决办法
3万
查看次数

检查文件是否是python中的命名管道(fifo)?

我与一个命名管道进行通信,但我想在打开它之前检查它是否真的是命名管道.

我在谷歌检查,但没有任何东西,os.path.isfile()返回False,我真的需要检查它.

python pipe

21
推荐指数
1
解决办法
6389
查看次数

python命名管道问题

我正在尝试使用命名管道在守护程序和客户端之间建立双向通信.代码在尝试打开用于输入的命名管道时挂起为什么?

class comm(threading.Thread):

def __init__(self):
    self.srvoutf = './tmp/serverout'
    self.srvinf = './tmp/serverin'
    if os.path.exists(self.srvoutf):
        self.pipein = open(self.srvoutf, 'r') 
        #-----------------------------------------------------Hangs here
    else:
        os.mkfifo(self.srvoutf)
        self.pipein = open(self.srvoutf, 'r')
        #-----------------------------------------------------or here
    if os.path.exists(self.srvinf):
        self.pipeout = os.open(self.srvinf, os.O_WRONLY)
    else:
        os.mkfifo(self.srvinf)
        self.pipeout = os.open(self.srvinf, os.O_WRONLY)

    threading.Thread.__init__ ( self )
Run Code Online (Sandbox Code Playgroud)

python

10
推荐指数
1
解决办法
7428
查看次数

Python运行系统命令,然后退出...将不会退出

我有以下python代码:

os.system("C:/Python27/python.exe C:/GUI/TestGUI.py")
sys.exit(0)
Run Code Online (Sandbox Code Playgroud)

它运行命令正常,弹出一个窗口.但是,它不会退出第一个脚本.它只是停留在那里,我最终不得不强行杀死这个过程.没有错误产生.这是怎么回事?

python exit

10
推荐指数
1
解决办法
3万
查看次数

标签 统计

python ×3

bash ×1

exit ×1

fifo ×1

linux ×1

logging ×1

pipe ×1