gpt4 book ai didi

perl - TCP 客户端使用 Perl fork() + system() 挂起

转载 作者:行者123 更新时间:2023-12-03 12:05:48 24 4
gpt4 key购买 nike

我有一个通过 Net::Server 模块运行 TCP 监听器的 perl 脚本。当远程连接到 perl 服务器时,远程发送一个要播放的 mp3 音乐文件的文件名。当我 fork() 然后调用 system('mpg123 $filename') 时,客户端挂起。如何使 mpg123 进程成为后台,以便 child 可以关闭连接?

my $pid = fork();

if (defined $pid && $pid == 0)
{
# child process -- never gets to print statement until $cmd is done
system ($cmd);
print STDERR "child launched\n";
exit (0);
}

最佳答案

Perl 的 system在命令完成之前不会返回。你可以重新安排 child

if (defined $pid && $pid == 0)
{
# child process
warn "child launched\n";
exec $cmd or die "$0: exec $cmd: $!";
}

关于perl - TCP 客户端使用 Perl fork() + system() 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15296788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com