こんにちわ,
今シェルスクリプトの学習をしています。
シェルスクリプトのなかであるプログラムにSIGINTを送るシェルスクリプトを作るにはどうすればいいでしょうか。
たとえば,
./hogeというCプログラムがあり,その中でsignal関数を用いてSIGINTを捕らえるようなプログラムがなされているとき,
シェルスクリプトで
#!/bin/sh
./hoge &
PID=$$
sleep 2
kill SIGINT $PID
だと,$$にはこのシェル自体のPIDが返ってきているので,うまくいきません。
なんとか,./hogeをうごかし,その後何秒かあとにSIGNALを送るようなシェルスクリプトを作りたいのですが,どうすればいいでしょうか。
Cでforkさせて外部呼出しによって送るしかないのでしょうか。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
No2のtatsu99さんが書かれている通り、「$!」でバックグラウンド実行したプロセスのプロセスIDが取得できます。
ただし、これはBシェル(/bin/sh)の標準的な仕様であり、Linuxに限らずBシェルの動く環境であれば、ほぼ例外なく使える機能です。
もちろん、bashのようなBシェルの上位互換シェルでもつかえます。
ちなみに、このような特殊変数には他に、
$? 直前のコマンドの終了ステータス
$$ 実行中のシェルスクリプトのPID
$- Bシェルを制御するフラグの状態
などがあり、シェルスクリプトを使う際には非常に役に立ちます。
No.2
- 回答日時:
基本的には以下の方法をとります。
1.PSコマンドを実行する。
2.その結果からhogeのプログラムの行をピックアップする。
3.その行のプロセスIDを取得する。
PSによって表示される内容がOSによって若干異なりますので、どのOSで動作させるのかも提示されると、さらによい回答が得られると思います。
No.1
- 回答日時:
私はシェルスクリプトに関してはよく知らないので、
参考になりそうなURLだけ紹介しておきます。
# 「じゃあ、コメントするな」というご指摘、覚悟してます
ぱっとみたかんじだと、yu393939さんが望んでいる処理をできそうな感じがします。
お目汚し、失礼。
参考URL:http://www.nishimoto-site.net/archiver/fj/unix/2 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Linuxについて質問です。 引数に指定されたアクセスログのファイルからアクセス数が多い順に上位3つ 1 2023/02/03 03:46
- その他(プログラミング・Web制作) シェルのSTEP数について教えてください。シェルスクリプトの先頭に、#!/bin/shとか書きますよ 3 2023/06/08 19:02
- その他(プログラミング・Web制作) linuxについて質問です 1 2023/02/06 19:55
- UNIX・Linux 「何か便利なシェルスクリプトのソースコードを作りなさい」という課題 3 2022/08/12 11:51
- Perl bashスクリプト 2 2023/02/10 21:01
- UNIX・Linux gawk 3 2022/08/18 14:07
- UNIX・Linux Linuxについて2つ質問したいです。 ① シェルスクリプト名をawk1.shとして、指定されたデー 1 2023/02/03 03:49
- UNIX・Linux Debianでシェルスクリプトにおいて正規表現の条件文で[[,]]が使えないので困ってます 2 2023/01/20 09:27
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- UNIX・Linux デフォルト値のパラメータ展開 1 2022/08/12 17:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ubuntuの端末の左にカレントデ...
-
FreeBSDのログインシェルshの$H...
-
Solaris10
-
ターミナルが全く入力できない
-
バッチ・ログファイルへの出力
-
posixでshellを起動したとき`da...
-
Solarisでデフォルト環境変数の...
-
Cシェル内で自動ログアウトさせ...
-
コマンドフック
-
違いについて
-
mac os x10.6.4のターミナルでp...
-
初代ibook(シェル型)の無線LA...
-
[UNIXコマンド] eval教えて下...
-
ログインシェルと対話型シェル...
-
シェルスクリプトで #!/bin/sh ...
-
シェル(ksh)で変数にある文字列...
-
csh (tcsh)での環境変数の長さ...
-
solarisのsetenvが無効
-
シェル??? スクリプト???
-
SONYの音楽ソフト「x-アプリ」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
export と set は違うの?
-
Cシェル内でBシェルの様な関数...
-
シェル 会話形式でエンターキ...
-
シェルスクリプトで #!/bin/sh ...
-
.cshrc ファイルについて
-
『存在するかどうか分からない...
-
ubuntuの端末の左にカレントデ...
-
ターミナルが全く入力できない
-
バックスラッシュの意味がわか...
-
Linuxのファイル禁止文字
-
シェルスクリプトに関する問題...
-
mac os x10.6.4のターミナルでp...
-
シェルスクリプトのbashとperl...
-
違いについて
-
tcshなのにスクリプト構文中のs...
-
シェル(ksh)で変数にある文字列...
-
posixでshellを起動したとき`da...
-
シェルの変数をMySQLに送る方法...
-
Solaris9でdateコマンドの結果...
-
Cシェルでのファイルからの入...
おすすめ情報