我有一个非常简单的Python 3脚本: f1 = open('a.txt', 'r') print(f1.readlines()) f2 = open('b.txt', 'r') print(f2.readlines()) f3 = open('c.txt', 'r') print(f3.readlines()) f4 = open('d.txt', 'r') print(f4.readlines()) f1.close() f2.close() f3.close() f4.close() 但它总是说: IOError: [Errno 32] Broken pipe 我在互联网上看到了解决这个问题的所有复杂的方法,但是我直接拷贝了这段代码,所以我认为代码有问题,而不是Python的SIGPIPE。 我redirect输出,所以如果上面的脚本被命名为“open.py”,那么我的命令运行将是: open.py | othercommand
我有一个小型的服务器程序,它接受TCP或本地UNIX套接字上的连接,读取一个简单的命令,并根据命令发送一个回复。 问题是客户端有时候可能对这个答案没有兴趣,并且会提前退出,所以写入这个套接字将导致一个SIGPIPE,并使我的服务器崩溃。 最好的做法是防止这里的崩溃? 有没有办法检查线路的另一边是否仍在读取? (select()在这里似乎没有工作,因为它总是说套接字是可写的)。 还是应该用一个处理程序来捕获SIGPIPE并忽略它?