linux用户间通信命令的简单介绍( 四 )


信号量表示资源的数量,控制信号量的方式有两种原子操作:
P 操作是用在进入共享资源之前 , V 操作是用在离开共享资源之后,这两个操作是必须成对出现的 。
接下来,举个例子 , 如果要使得两个进程互斥访问共享内存,我们可以初始化信号量为 1 。
具体的过程如下:
可以发现,信号初始化为 1,就代表着是互斥信号量,它可以保证共享内存在任何时刻只有一个进程在访问,这就很好的保护了共享内存 。
另外,在多进程里,每个进程并不一定是顺序执行的,它们基本是以各自独立的、不可预知的速度向前推进 , 但有时候我们又希望多个进程能密切合作 , 以实现一个共同的任务 。
例如,进程 A 是负责生产数据,而进程 B 是负责读取数据,这两个进程是相互合作、相互依赖的,进程 A 必须先生产了数据,进程 B 才能读取到数据,所以执行是有前后顺序的 。
那么这时候 , 就可以用信号量来实现多进程同步的方式,我们可以初始化信号量为 0 。
具体过程:
可以发现,信号初始化为 0,就代表着是同步信号量 , 它可以保证进程 A 应在进程 B 之前执行 。
跨机器进程间通信方式
同个进程下的线程之间都是共享进程的资源 , 只要是共享变量都可以做到线程间通信,比如全局变量,所以对于线程间关注的不是通信方式,而是关注多线程竞争共享资源的问题,信号量也同样可以在线程间实现互斥与同步:
linux的telnet命令使用方法详解linux下telnet命令主要是提供用户远程登录,下面由我为大家整理了linux的telnet命令使用方法详解的相关知识,希望对大家有帮助!
linux的telnet命令使用方法详解
语法
telnet [-8acdEfFKLrx][-b主机别名][-e脱离字符][-k域名][-l用户名称][-n记录文件][-S服务类型][-X认证形态][主机名称或IP地址通信端口]
参数
-8 允许使用8位字符资料,包括输入与输出 -a 尝试自动登入远端系统 -b主机别名 使用别名指定远端主机名称 -c 不读取用户专属目录里的.telnetrc文件 -d 启动排错模式 -e脱离字符 设置脱离字符 -E 滤除脱离字符 -F 使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机 -f 此参数的效果和”-F”参数相同 -k域名 使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名 -K 不自动登入远端主机 -l用户名称 指定要登入远端主机的用户名称 -L 允许输出8位字符资料 -n记录文件 指定文件记录相关信息 -r 使用类似rlogin指令的用户界面 -S服务类型 设置telnet连线所需IP TOS信息 -x 假设主机有支持数据加密的功能,就使用它 -X认证形态 关闭指定的认证形态
linux的telnet命令使用示例
示例1:远程服务器无法访问
[root@linuxprobe ~]# telnet 192.168.120.209 Trying 192.168.120.209... telnet: connect to address 192.168.120.209: No route to host telnet: Unable to connect to remote host: No route to host
处理这种情况方法:
(1)确认IP地址是否正确
(2)确认IP地址对应的装机是否已经开机
(3)如果主机已经启动,确认路由设置是否设置正确(使用route命令查看)
(4)如果主机已经启动,确认主机上是否开启了telnet服务(使用netstat命令查看,TCP的23端口是否有LISTEN状态行)
(5)如果主机已经启动telnet服务 , 确认防火墙是否开放了23端口的访问(使用iptables-save查看)
示例2:域名无法解析
[root@linuxprobe ~]# telnet: Temporary failure in name resolution
处理这种情况方法:
(1)确认域名是否正确

推荐阅读