免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2291 | 回复: 6
打印 上一主题 下一主题

nc 的perl程序,一点小问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-04 19:00 |只看该作者 |倒序浏览
#! /usr/bin/perl -w
use Getopt::Std;
use IO::Socket;
use IO::Handle;
use Thread;

getopts("le:p:", \%arg);#什么意思?
$SIG{INT} = \&Catch_Fun;
$SIG{QUIT} = \&Catch_Fun;#\&Catch_Fun是函数指针吧,SIG 哈希一定要设置么,这个是怎么用到的?
my $sock;
if (defined $arg{l}){
        if (defined $arg{p}){
                my $lsock=IO::Socket::INET->new(Listen=>1,LocalPort=>$arg{p}) || die "Can't Create Listen: $!";
                next unless $sock=$lsock->accept;
                if (defined $arg{e}){
                        *STDIN =$sock;
                        *STDOUT=$sock;
                        exec $arg{e};       
                }else{
                        Thread->new(\&SendMsg);
                        &RecvMsg;
                }
        }
}else{
        $sock=IO::Socket::INET->new(PeerAddr=>$ARGV[0],PeerPort=>$ARGV[1]) || die "Can't connect: $!";       
        Thread->new(\&SendMsg);
        &RecvMsg;
}
sub SendMsg{
        while(<STDIN>){
                print $sock $_;
        }       
}
sub RecvMsg{
        while(<$sock>){
                print $_;
        }
}
sub Catch_Fun{
        die "exit!";
}
------------------------end-----------------------------------------------------------

getopts("le:p:", \%arg);#什么意思?
$SIG{INT} = \&Catch_Fun;
$SIG{QUIT} = \&Catch_Fun;#\&Catch_Fun是函数指针吧,SIG 哈希一定要设置么,这个是怎么用到的?

论坛徽章:
0
2 [报告]
发表于 2008-04-04 19:48 |只看该作者
getopts的问题去看GetOpt::Std的文档
信号处理的部分看自己的程序是否需要, 比方说你不希望你的程序被Ctrl-C打断,那就要设置
$SIG{'INT'}

论坛徽章:
0
3 [报告]
发表于 2008-04-04 20:02 |只看该作者

回复 #2 Nosferatu 的帖子

SIG这个原理是什么?为什么会调用被挂的函数,我知道其中肯定有过程,能把这个过程展示一下么?

论坛徽章:
0
4 [报告]
发表于 2008-04-07 23:42 |只看该作者
原帖由 grayblaze 于 2008-4-4 20:02 发表
SIG这个原理是什么?为什么会调用被挂的函数,我知道其中肯定有过程,能把这个过程展示一下么?


LZ可以Baidu一下"POSIX 信号定义".

论坛徽章:
0
5 [报告]
发表于 2008-04-08 00:19 |只看该作者

回复 #3 grayblaze 的帖子

这个。。 你看源码好了

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2008-04-08 09:40 |只看该作者
原帖由 grayblaze 于 2008-4-4 20:02 发表
SIG这个原理是什么?为什么会调用被挂的函数,我知道其中肯定有过程,能把这个过程展示一下么?


有空你可以看看network programming with perl
有很多关於POSIX的介绍...如果还不够...

你可以看看unix的书籍, 尤其有关kernel的...应该都会解释 singal 在干嘛用的....
基本上可能C版或linux/unix 那边会有人比较深入的了解....

上面讲的那本书有很多例子了....你可以先看看...

基本上写Perl..只要知道怎麽用就好了....

要深入的话..建议你去研究C/C++.与linux Kernel..

论坛徽章:
0
7 [报告]
发表于 2008-04-08 11:17 |只看该作者
多谢大家热心解答,特别是apile ,很多地方都能看到你的身影,谢谢:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP