如何让SDL应用程序(不是以root用户身份运行)使用控制台
我想使用基于SDL的程序在控制台上显示图形,而不必从控制台登录,也不需要以root用户身份运行该程序。例如,我希望能够通过ssh运行它。目标操作系统是raspbian。 这是python中的一个简短示例来说明问题: import os, pygame os.environ['SDL_VIDEODRIVER'] = 'fbcon' pygame.init() s = pygame.display.set_mode() print "Success" 如果我从控制台运行它,则可以正常运行(运行到完成,不会引发异常),如果以root用户运行它,则可以通过ssh运行。 我检查了我的用户是否在音频和视频组中。 我已经使用strace来查看从控制台运行它(起作用),通过ssh以root身份运行(也可以工作)以及通过ssh以普通用户身份运行(不起作用)之间的区别。 第一个区别是我的用户没有访问/ dev / tty0的权限。我创建了一个新组(tty0),将用户置于该组中,并添加了udev规则以使该组可以访问/ dev / tty0。 strace输出在此ioctl调用处发散-此处显示失败;当程序从控制台运行或以root身份从ssh运行时,ioctl返回0: open("/dev/tty", O_RDWR) = 4 ioctl(4, VT_GETSTATE, 0xbeaa01f8) = -1 EINVAL (Invalid argument) (地址也有所不同,但这并不重要。) 鉴于我的程序在以root身份运行时可以运行,因此我认为这存在权限问题。如何为我的用户提供必要的权限,使其能够运行该程序而无需在控制台上登录(并且无需以root用户身份运行)?