问题场景:我们有一块设备卡,上面跑着一个FreeBSD。host这边是Linux,与device那边的交互由host这边的Linux driver负责,driver在Linux下提供了几个char device来使得用户可以与device交互。这些char devices里面,有一个连接到device那边FreeBSD的终端,host端通过minicom(一个2222old的Unix程序)来通过这个char dev与device端交互,这样方便device一端的开发调试。
问题:这个char device只能由一个进程来使用。那么,如果两个开发人员在同时进行开发,那么就只能在用的时候打开,用完就关掉,这样很不方便。
这个问题其实可以转化为:怎么样让两个用户共享一个console。
解决办法:两个开发人员(tom & jerry)可以共享一个screen会话。
tom $> screen -S minicom-session
-S选项用来为该screen会话指定一个名字,方便引用。
tom $>
CTRL-A :multiuser on
Ctrl-A是screen命令的前导符。
tom $>
CTRL-A :acladd jerry
添加jerry的访问权限。
之后,jerry就可以连接到该screen会话了。
jerry $>
screen -x tom/minicom-session
可能的问题:
1, /var/run/screen/的权限可能需要修改;
2, CTRL-A是screen默认的命令前导符, 如果这个组合需要在该会话里面使用(譬如minicom的命令前导符也是Ctrl-A), 可以在开始screen会话的时候指定其他组合键作为前导符:
tom $> screen -S minicom-session -e^Gg