2017-02-17 4 views
-1

私は最初に音楽を演奏したいC++ゲームに取り組んでいます。C++シェル()でPIDを取得していますか?

int main() { 
    // Gets user's name 
    system("clear"); 
    system("afplay ~/music.mp3 &>/dev/null &"); 
    string name; 
    cout << "###################\n"; 
    cout << "# Enter your name #\n"; 
    cout << "###################\n"; 
    cin >> name; 

    // Greets user 
    system("clear"); 
    cout << "So, your name is " << name << "?\n"; 
    system("sleep 1.5"); 
    cout << "Greetings, and welcome to the world of NULL!\n\n"; 
    system("kill $!"); 

    return 0; 
} 

しかし、kill $!kill ING、またはafplay音楽を停止しない:これは、これまでの私のコードのサンプルです。私はsystem("afplay ~/music.mp3 &>/dev/null &");がPIDを$!に出力していないためだと思います。

どうすればいいですかkillafplayまたは少なくともPIDを取得できるのでkillですか?

私はMac上でだと私はC++に新たなんだ...

警告:これは悪い習慣です。それは重要なプロセスを殺してすべてを殺す可能性があるため、ユーザーが使用していたタスクを停止する可能性があります。

+0

を呼び出すことができますと言うあなたは、アプリケーション内の音楽再生のための別のプロセスは良いアイデアです呼び出すことを確認していますか? :) – Zefick

+0

それはなぜでしょうか? – keeganjk

+0

@KeeganKuhnでも、もし誰かが、原子炉を停止する「アフラプ」というプログラムを持っているシステムを持っていたらどうでしょう?あなたは自分のプログラムができることのために 'system'を使うべきではなく、あなたがC++をよく経験するまで、' system'を使うべきではないでしょう。 –

答えて

0

Appleのマニュアルページには、あなただけの

killall afplay 

http://osxdaily.com/2010/12/07/command-line-mp3-player-in-mac-os-x/

+0

これは、システム上の 'afplay'という名前のプロセスをすべて終了させることに注意してください(プログラムを実行しているユーザーには強制終了の権限があります)。だからあなたはあなたのプログラムを使用する人の誰もが重要なプログラムの名前を "afplay"にすることはできないというルールを課しました。それは本当に悪い習慣です。 –

+0

C++でオーディオファイルを再生するにはどうしたらよいですか? – keeganjk

+0

@KeeganKuhn新しい質問をするには、新しい質問[ここ](http://stackoverflow.com/questions/ask)を尋ねる必要があります。 –

関連する問題