基本上,我已插入Arduino
与我的计算机进行通信,目标是在我点击按钮时打开Chromium。单击时,arduino将在serial communication
上发送一个字符串,由于Python
脚本,计算机将获得此字符串。
然后,此脚本将使用Chromium
Popen(['chromium-brower'])
我已经能够毫无问题地完成所有这些工作,但Chromium
无法启动。语法是正确的,但终端返回一个我不理解的奇怪错误。
sudo python serialtest.py 开始 [0825/084720:错误:nss_util.cc(96)]无法创建/home/dlslabo/.pki/nssdb目录。 [0825/084721:致命:chrome_main_delegate.cc(386)]检查失败:process_type.empty()。无法获取用户数据目录 流程类型:zygote #0 0x7f1a233095fe base :: debug :: StackTrace :: StackTrace() #1 0x7f1a23325f8e logging :: LogMessage :: ~LogMessage() #2 0x7f1a2f3a11f5 #3 0x7f1a2aa8f224 #4 0x7f1a2aa8d80d content :: ContentMain() #5 0x7f1a2f3a065a #6 0x7f1a17a25a40 __libc_start_main #7 0x7f1a2f3a0519
这是我的python程序:
#!/usr/bin/env python
import serial
from subprocess import Popen
ser = serial.Serial('/dev/ttyACM0', 9600)
while 1 :
line = ser.readline().strip()
print line
if line == "start":
p = Popen(["chromium-browser"])
我尝试使用其他应用Popen(["gedit"])
和Popen(["firefox"])
,但效果很好。
从我在互联网上看到的内容来看,这可能是因为我以超级用户的身份执行脚本。但我不知道为什么这会导致问题。
答案 0 :(得分:1)
以drupal_map_assoc
用户身份运行浏览器(或任何其他非系统管理程序)对安全性不利。
您似乎正在使用'#options' => $styles,
,因为您需要访问特定的设备节点。在这种情况下,您可以使非root用户成为设备的所有者。最简单的方法是通过udev规则。使用以下内容创建名为tensorboard --logdir=name_of_the_folder
的文件:
{{1}}
如果更多用户可能需要访问权限,请为他们创建一个组,例如{{1}},然后设置{{1}}和{{1}}。 More about writing udev rules here.