小编Anu*_*eep的帖子

为什么signal.SIGALRM在Windows的Python中不起作用?

我正在尝试了解OS概念和Python库。

我遇到了Python文档https://docs.python.org/3/library/signal.html链接中提到的特定示例,该示例在Windows上不适合我。

import signal, os

def handler(signum, frame):
    print('Signal handler called with signal', signum)
    raise OSError("Couldn't open device!")

# Set the signal handler and a 5-second alarm
signal.signal(signal.SIGALRM, handler)
signal.alarm(5)
# This open() may hang indefinitely
fd = os.open('/dev/ttyS0', os.O_RDWR)

signal.alarm(0)          # Disable the alarm
Run Code Online (Sandbox Code Playgroud)

singal.SIGALRM在Windows上不起作用有任何特定原因吗?

自动完成甚至在Pycharm IDE中显示SIGALRM(我假设如果显示这样的变量或函数)。

但是,当我运行该程序时,它在Windows上给了我以下错误。我还没有在Linux上检查过。

Traceback (most recent call last):
  File "C:/Users/preddy53/Desktop/syst.py", line 8, in <module>
    signal.signal(signal.SIGALRM, handler)
AttributeError: module 'signal' has no attribute 'SIGALRM'
Run Code Online (Sandbox Code Playgroud)

我在哪里做错了?它仅适用于操作系统吗?

python linux windows signals python-3.x

6
推荐指数
1
解决办法
5062
查看次数

什么是|.*/|| 在Perl正则表达式替换?

我正在努力将Perl cgi脚本转换为Python.

在脚本里面,我遇到了下面的代码,我不明白.

帮我解决这个问题.

my $p = $0;
$p =~ s|.*/||;
Run Code Online (Sandbox Code Playgroud)

我明白,my $p = $0;将脚本文件的绝对路径+名称分配给变量p.

第二行将执行正则表达式替换,并仅提供没有路径的文件名.

但我不明白的是那些|.*/||之后s.

我搜索了很多资源但却不明白它的作用.

为了给我提供脚本名称,实际上要做的是什么?

regex perl replace path substitution

1
推荐指数
1
解决办法
60
查看次数

$ SIG {'ALRM'}在Perl中做了什么

我是shell脚本Perl的新手,并尝试将Perl脚本转换为Python脚本.

我遇到了以下代码片段,我并不清楚.

sub sigalrm_handler
{
  printf (STDOUT "Timeout: Timeout Error Occured.\n");
  kill (1, $proc);
  exit (1);
}

sub main
{
  ...
  ...
    $SIG{'ALRM'} = \&sigalrm_handler;
    alarm ($ARGV[0]);
    shift @ARGV;

    $proc = spawn (@ARGV);
    wait;
    exit ($?);
  ...
  ...
}
main ()
Run Code Online (Sandbox Code Playgroud)

这个$SIG{'ALRM'}命令要做什么?它是Python中的某种特殊关键字.

我已经看到很多来源$SIGALRM正在使用,但没有找到任何来源他们提到为什么它被使用$SIGALRM只是为什么不是其他名称.

$SIG{'ALRM'}在这项任务之后,这个价值会是什么?

任何人都可以帮我理解这段代码吗?

shell perl signals process alarm

1
推荐指数
1
解决办法
719
查看次数

标签 统计

perl ×2

signals ×2

alarm ×1

linux ×1

path ×1

process ×1

python ×1

python-3.x ×1

regex ×1

replace ×1

shell ×1

substitution ×1

windows ×1