当前位置:  开发笔记 > 运维 > 正文

使用ALSA查找流程听起来很快

如何解决《使用ALSA查找流程听起来很快》经验,为你挑选了1个好方法。

目前/usr/sbin/alsaDebian中的方式知道使用声卡的过程如下:

echo $( \
    lsof +D /dev -F rt \
    | awk '/^p/ {pid=$1} /^t/ {type=$1} /^r0x(74|e)..$/ && type == "tCHR" {print pid}' \
    | cut -c 2- \
    | uniq \
)

这是相当丑陋和依赖lsof.我正在寻找没有的POSIX解决方案lsof,也许使用/ proc.

    time for i in /proc/*/fd/*; do readlink $i | grep -q /dev/snd/pcm && echo $i | awk -F '/' '{print $3}'; done | uniq

不幸的是,似乎需要两倍于lsof上面的基本片段.你能让它更快,以使其成为可行的替代品吗?

更新我重写了以上内容:

#!/bin/sh
for i in /proc/[0-9]*/fd/*
do
        if readlink $i | grep -q /dev/snd/pcm
        then
                IFS=/; set -- $i; unset IFS; echo $3
        fi
done

但它似乎与我之前的片段具有相同的性能.我怀疑grep是罪魁祸首.

更新:我已经打开了关于该主题的Debian错误.



1> jfsantos..:

关于ALSA FAQ的问题有一个答案.在我的系统上,使用热熔器比使用lsof更快.

fuser -v /dev/snd/*

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有