2017-01-29 12 views
0

小さなプログラムで私のコンピュータにローカルに保存されているサウンドファイルを再生しています。 プログラムは正常に実行され、となり、オーディオは再生されますが、端末で「端末属性を設定できません」というメッセージが表示され続けるmpg123およびRuby; 「端末属性を設定できません」

私はmpg123とRubyを使用しています。 はあなたのDBZのような連中を願っています:)

play_audio = fork{ exec 'mpg123','-q', '9000.mp3' } 


h = { "Goku" => 9001, "Yamcha" => 4029, "Krillin" => 4034, "Piccollo" => 6701 } 
puts "Vegeta, what does scouter say about his power level?\n\n" 


h.each do |key, value| 
    if value > 9000 
     puts "#{key.upcase}'S POWER LEVEL IS OVER 9000!!!" 
     play_audio 
    else 
     puts "#{key}'s power level is #{value}" 
    end 
end 

エラーメッセージの絵enter image description here

答えて

1
fork { exec 'mpg123','-q', '9000.mp3' } 

ここでの処理をINGのforkの理由は何ですか?

フォークされたプロセスにはターミナルがなく、mpg123は出力するターミナル属性を設定できません。

fork { exec 'mpg123','-q', '9000.mp3', '>/dev/null', '2>&1' } 

をしかし、まだ、ただ冗長forkを取り除くと、あなたはすべてのセットです:

はおそらく助けるかもしれない、それを塞ぎます。

+0

私は、スクリプトの残りの部分が実行されている間、バックグラウンドでオーディオを再生することが重要だと思うので、フォークが必要です。しかし、重要ではないので、エラーメッセージを消音することはおそらく十分です。 – Max

関連する問題