我使用python2在最新的Docker Ubuntu映像中运行以下代码:
Docker:
docker pull ubuntu
docker run -it ubuntu /bin/bash
在docker中:
apt update
apt install python
touch test
python
在python中:
>>> import struct
>>> import fcntl
>>> f = open("test", "rb")
>>> binary_data = fcntl.ioctl(f, 2, struct.pack('I', 0))
错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 22] Invalid argument
我在PC上执行的相同流程,结果没有出现任何错误。 我怀疑文件描述符有问题。在这两种情况下,当我调用f.fileno()时,我都得到结果3。在两种情况下,我都在python 2.7.16上运行它。
但是当我在Docker中运行时:
>>> import struct
>>> import fcntl
>>> f = open("test", "rb")
>>> binary_data = fcntl.ioctl(2, 2, struct.pack('I', 0))
我没有错误。