私は、実行したいものをいくつか選択するよう促すメニュープログラムを作成しました。問題は、 バックグラウンドでプロセスを実行するオプション「b」を持っていなければならないということです。例えば のメニューを手に入れて、 バックグラウンドジョブが実行中に他の選択を行うことができます。私はバックグラウンドで実行する必要がどのプロセスが混乱している私の教授の例では、彼は睡眠を使用すると言うが、私はそれを私の場合に入れて私は正しい結果を持っていないと言う。BASHを使用して作成したメニュープログラムでバックグラウンドプロセスを実行するにはどうすればよいですか?
while [ true ]
do
clear
cat <<EOF
M A I N M E N U
========= =========
$(date)
l> -- List all file names in current directory
o> -- sign on this session
f> -- sign off this session
c> -- check if a file exists and view its contents
b> -- background job
s> -- interactive shell
d> -- shows date
q> -- quit
Please choose....or else..
EOF
read ans
case $ans in
l) ls -a
sleep 2
;;
o) signon
;;
f) signoff
;;
c) chk
sleep 2
;;
b) sleep 10 &
;;
d) date
;;
q) break
;;
esac
done
のでヤオールの一部を把握するために、これはおそらく、簡単ですが、私はプログラミングに新たなんだと私は地獄のように混乱しています。私がプログラムを実行すると、最初の3つの選択肢はうまく実行され、chkファイルは機能しません。表示する日付は取得できませんが、もっと重要なのはバックグラウンドプロセスが機能していないことです。私はプロセスやバックグラウンドの仕事を誤解していると思うので、私が間違っていることについて何か助けや説明をしていただければ幸いです。また、ここでは駄目のようなコードを残して申し訳ありませんが、私は実際に画面からコードを一枚の記事にする方法をマスターしていません。 `
オプション 'b'の後に10秒遅れているのが本当に分かりましたか?そこにいくつかのデバッグ行を追加したいかもしれません: 'ps -ef | grep "スリープ10";スリープ4 '。 'clear'は関連情報を消去し(' command not found')、 'clear'なしでデバッグするかもしれません。 –
私はこのお尻を後ろ向きに考えていましたが、もう一度私はこのすべてに慣れていますので、私を助けて、私の明らかに愚かな質問をしていただきありがとうございます。ええ、もちろん、バックグラウンドで10秒間寝ると、それを見ることはできません! DUH!私は新しいシェルを選ぶことを可能にする別のオプションをメニュープログラム上に作りました。新しいシェルを選ぶと、それは起動し、私が新しいシェルを始める前に私はバックグラウンドで20秒間スリープする "b"私は 'ps'して、睡眠がまだ動いているのを見ることができます。だから私はあなたのおかげでそれを理解した。 – Ooobunwhoubuntu