首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在Perl中对线程使用binmode时会出现分段错误?

为什么在Perl中对线程使用binmode时会出现分段错误?
EN

Stack Overflow用户
提问于 2010-04-15 17:50:12
回答 2查看 2K关注 0票数 3

此呼叫

代码语言:javascript
复制
my $th = threads->create(\&print, "Hello thread World!\n");
$th->join();

工作正常。但是一旦我添加了

代码语言:javascript
复制
binmode(STDOUT, ":encoding(ISO-8859-1)");

对于我的脚本文件,我得到一个错误,如“分段错误”,“访问被拒绝”。

在尝试调用perl线程时定义编码类型有什么错?

示例:

代码语言:javascript
复制
use strict; use warnings;
use threads;

binmode(STDOUT, ":encoding(ISO-8859-1)");

my $th = threads->create(\&print, "Hello thread World!\n");
$th->join();

sub print {
    print @_;
}

这段代码对我不起作用。

亲切的问候

--安迪

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-15 22:08:23

这被报告为bug in Perl's bug tracker。我在Windows5.12 RC0上也遇到了同样的故障。

票数 3
EN

Stack Overflow用户

发布于 2012-10-15 23:07:43

代码语言:javascript
复制
#!/usr/bin/perl
use strict; use warnings; use threads;
open my $fh, '>>', '/tmp/1' or die $!;
binmode $fh, ':encoding(isolatin1)' or die $!; # LINE 'A'
my $t = threads->create(sub { sleep 1; }); # LINE 'B'
$t->join();

以上是Perl 5.12.4中'B‘行的段错误。如果您交换行'A‘和'B',代码运行良好。如果在创建线程之前关闭$fh,它也运行得很好。因此,在这个问题得到解决之前,只要确保在创建新线程时没有打开任何已绑定编码的文件句柄即可。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2644238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档