从Python更新proc条目的推荐方法是什么
作者:互联网
我在/ proc / sys / fs / offs / ts / enable中有一个linux proc条目,可在自定义内核模块中切换标志.将值设置为1将启用模块中的模式,设置为0将禁用该模式.
在bash中,要启用该模式,我只需
echo 1 > /proc/sys/fs/offs/ts/enable
并禁用它,
echo 0 > /proc/sys/fs/offs/ts/enable
我有一个用Python 2.7编写的守护程序,它将寻找一些外部事件触发器,当该事件触发时,应启用或禁用内核模块中的功能.该守护程序以root特权运行,因此我不应该遇到任何类型的权限问题.
有建议从python设置此值的方法吗?
例如,说我的函数现在看起来像这样.
def set_mode(enable=True):
with open('/proc/sys/fs/offs/ts/enable', 'w') as p:
if enable:
p.write("1")
else:
p.write("0")
p.flush()
解决方法:
您的代码有两个问题.
首先,您要写入文件,但是要以读取模式打开它.
其次,.write需要字符串数据,而不是整数.
我们可以利用False和True的整数值为0&来消除if测试. 1,分别.下面的代码使用print函数而不是.write,因为print可以将int(enable)返回的整数转换为字符串.另外,print会附加一个换行符(除非您不通过end参数告诉它),这样,Python代码将执行与Bash命令行相同的操作.
def set_mode(enable=True):
with open('/proc/sys/fs/offs/ts/enable', 'w') as p:
print(int(enable), file=p)
如果要使用.write进行操作,请将打印行更改为:
p.write(str(int(enable)) + '\n')
有一种方法可以一步完成从布尔值到字符串的转换:使用布尔值索引到字符串文字中:
'01'[enable]
很短速度很快,但有人认为使用布尔值作为索引有点神秘.
标签:linux-kernel,linux-device-driver,linux,python 来源: https://codeday.me/bug/20191026/1937030.html