プロが教える店舗&オフィスのセキュリティ対策術

C言語のカテゴリで質問しようか迷いましたが動きはシェル関連なので質問させてください.

例えば,以下のようなCソースがあったとします.

1 #include<iostream>
2
3 int main(int argc, char *argv[])
4 {
5
6 for (int i = 0;; i++) {
7
8 std::cout << "0" << std::endl;
9 }
10
11 return 0;
12 }

実行ファイル名を0として

./0 & としましたが,0が連続的に出力されるだけでした.

バックグラウンドで処理させているはずなのになぜ0が出力されるのでしょうか?

A 回答 (2件)

どういう動作を期待したんでしょうか?



バックグラウンドにしても、標準入出力の割り当ては変わりません。

もし、出力を端末に出さずに保存したいのなら、ファイルにリダイレクトします。

あるいは、あらかじめ stty tostop を実行しておくと、バックグラウンドプロセスが端末に出力しようとしたタイミングでそのバックグラウンドプロセスが一時停止されます(std::coutが完了しないと言うこと)。fgでフォアグラウンドにするか、stty -tostop で再開します。

同じように、バックグラウンドプロセスが、標準入力から読もうとするとそのタイミングでプロセスが止まります。この場合は、フォアグラウンドにして、入力します。
    • good
    • 0
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!