本节主要内容:
FIFO应用示例,
linux两个进程间,使用FIFO进行通信.
例子:
#!/usr/bin/perl -w
#
#site: www.jb200.com
my $cmd_ff = "./ffmpeg -i ....";
my $uuid = `uuidgen`; // 生成不重名FIFO的名称
chomp $uuid;
system("mkfifo $uuid"); // 创建FIFO
my $pid_ffmpeg = fork; // 创建进程
if (0 == $pid_ffmpeg)
{
// 子进程
open(STDERR, ">", $uuid); // 将STDERR重定向到FIFO
exec($cmd_ff); // 启动ffmpeg, 它的STDERR都输出到FIFO
}
else
{
// 主进程
$/="r";
$|++;
open my $fh, "<", $uuid; // 以FIFO为输入,并定位其到变量$fh
while(<$fh>) // 每次读取一行
{
// 处理每行的数据
}
}