我尝试向sysfs表单写一个threading.thread
没有线程就可以了:
f = open('/sys/class/pwm/pwmchip0/pwm0/duty_cycle', 'w')
f.write(str(100))
f.close()
但如果我把它放在一个帖子中:
import threading
class Thread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
while True:
f = open('/sys/class/pwm/pwmchip0/pwm0/duty_cycle', 'w')
f.write(str(100))
f.close()
time.sleep(1)
t = Thread()
t.start()
导致:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
self.run()
File "/home/steve/test.py", line 10, in run
f.close()
IOError:[Errno 22]参数无效
如果在f.close()之前添加了f.flush(),则在f.flush()中发生相同的错误。 因为看起来线程与主线程没有相同的sysfs权限。 即使在写入块周围添加锁定也不会阻止它。 为什么会这样呢?我该如何解决这个问题呢?