[总结]IPC之管道
2011-05-31 14:20
274 查看
服务端:
1.在while循环条件中,将$client定义为私有my,可以防止最后忘记close($client);,从而导致客户端阻塞。
注意要在while循环条件中定义成my,如果在外面定义成私有,最后还是需要调用close($client)。
open也有这样的用法,将文件描述符$fh定义为私有my,最后程序也会自动close($fh)。
以上程序的close(),我都屏蔽了,程序正常运行。
2.不知道为什么,我在open一个管道时,会报Illegal seek,至今原因不明。
打开一个管道也可以用pipe,不过我习惯open这种方式,“-|”表示打开读的管道,“|-”表示打开写的管道。
3.向客户端发送数据时,记得最后一定要有回车分隔。
print $client $_中的$_是由exec结果所得,该字符串默认有/n结尾。
客户端:
客户端比较简单,接受服务端的消息方法有
1.单条消息用 my $message = <$server>;
2.多条消息用 my @message = <$server>;
#!/usr/bin/perl -w use strict; use warnings; use IO::Socket; my $server = IO::Socket::INET->new( Proto => 'tcp', LocalPort => 8125, Listen => 1, Reuse => 1, ) or die $!; while (my $client = $server->accept()) { $client->autoflush(1); print "Welcome " . $client->peerhost . "/n"; my $pid = open(my $fh_read, "-|") or warn $!; if ($pid) { # parent while (<$fh_read>) { print $client $_ or die $!; } #close($fh_read) || warn "kid exited $?"; } else { # child exec("date") || die "can't exec program: $!"; } print $client "Goodbye./n"; #$client->close(); } $server->close();
1.在while循环条件中,将$client定义为私有my,可以防止最后忘记close($client);,从而导致客户端阻塞。
注意要在while循环条件中定义成my,如果在外面定义成私有,最后还是需要调用close($client)。
open也有这样的用法,将文件描述符$fh定义为私有my,最后程序也会自动close($fh)。
以上程序的close(),我都屏蔽了,程序正常运行。
2.不知道为什么,我在open一个管道时,会报Illegal seek,至今原因不明。
打开一个管道也可以用pipe,不过我习惯open这种方式,“-|”表示打开读的管道,“|-”表示打开写的管道。
3.向客户端发送数据时,记得最后一定要有回车分隔。
print $client $_中的$_是由exec结果所得,该字符串默认有/n结尾。
客户端:
#!/usr/bin/perl -w use strict; use warnings; use IO::Socket; my $host = '135.242.102.32'; my $socket = IO::Socket::INET->new( Proto => 'tcp', PeerAddr => $host, PeerPort => 8125, ) or die $!; $socket->autoflush(1); #while ( <$socket> ) { print } print <$socket>; close $socket;
客户端比较简单,接受服务端的消息方法有
1.单条消息用 my $message = <$server>;
2.多条消息用 my @message = <$server>;
相关文章推荐
- UNIX/Linux进程间通信IPC---管道--全总结(实例入门)
- UNIX/Linux进程间通信IPC---管道--全总结(实例入门)
- Linux 进程间通讯(IPC)详细总结 1管道。
- Linux 进程间通讯(IPC)详细总结 2有名管道。
- Linux 进程间通讯(IPC)详细总结 1管道
- Unix/Linux IPC及线程间通信总结
- Linux下的IPC-命名管道的使用
- Linux 进程间通讯(IPC)详细总结 6本地套接字。
- 20155301 滕树晨linux基础——linux进程间通信(IPC)机制总结
- [Linux管道和IPC]在兄弟进程中使用管道
- IPC总结
- 【Linux】进程间通信(IPC)之匿名管道和命名管道以及测试用例
- 总结两种创建匿名管道来截获控制台命令的方法
- JAVA IO之管道流总结大全(转)
- linux 几种IPC例子总结
- 进程IPC---管道和有名管道
- Linux IPC总结(全)
- IPC之管道和FIFO的额外属性
- 【IPC通信】有名管道FIFO
- IPC——匿名管道