

system関数でシェルコマンドを発行しているC言語のプログラムがあります。
起動されるシェルコマンド(Cシェル)は2重起動防止のため以下の様にコマンド名をgrepしてPIDを取得し、2つ以上あると2重起動と見なしてコマンドを終了させています。
ps -aef | grep 自身のコマンド名 | grep -v grep ~
この時1回目の起動であるのに2重起動チェックに引っかかってしまいコマンドが実行されませんでした。
デバッグしたところ"csh コマンド名"のPIDとは別に一瞬"sh -c コマンド名"というプロセスがあってそれのPIDと合わせて2つに起動していると見なしていました。
調べたところsystem関数はsh経由(sh -c)でコマンドを実行するためだと言う事が分かり納得出来ました。
また元々バックグラウンドで起動させたいコマンドだったので以下の様に"&"を付与したところ2重起動チェックには引っかからなくなりました。
system("コマンド名 &")
バックグラウンド起動させても2重起動チェックで弾かれれば納得出来るのですが、通常の起動と何が違うか分からずに釈然としません。
良く分かりませんが、通常起動だとオーバーヘッドで実行に時間がかかりチェックで弾かれるけど、バックグラウンドだと一瞬で起動されてたまたま上手く行った様に見えるだけだったりするなどなのでしょうか??
もしご存知の方がいらっしゃいましたらご教示頂けると幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトが実行中か...
-
UDP通信での受信方法について
-
コマンドプロンプトですべてのU...
-
コマンドプロンプトで表示が多...
-
N88 BASIC リスト表示方法
-
ExcelVBAでDOSコマンドの標準出...
-
ttlで戻り値を取得する方法
-
バッチファイルでユーザーに入...
-
ローマ字入力で「トゥ」を入力...
-
1点の辻の字に変換したいがエク...
-
ネットカフェから、メールでき...
-
けさ、ツイッター(X)を開いたら
-
すべてのシートを選択してエク...
-
エラーが表示される
-
iMacキーボードの入力 小文字の...
-
OCNメールのバグ?
-
SNSのXのドメイン
-
Excelでエラー(#N/Aなど)値を...
-
ExcelでVBAを使用した際に、『...
-
エクセルからアクセスにインポ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトが実行中か...
-
コマンドプロンプトで表示が多...
-
ttlで戻り値を取得する方法
-
Tera Term Proに関する質問です。
-
バッチファイルでキー操作を行う。
-
別のユーザーフォームのコマン...
-
コマンドキーがないんですけど...
-
【Teratermマクロ】文字列の一...
-
VBユーザーフォームで時間入力
-
mountのDOSコマンド
-
文字の点滅はどうやるのですか?
-
DOSコマンドでポートから受信
-
RTX1100の削除コマンド
-
EEPROMのデータの初期化について
-
VBでDosコマンドを動かすには
-
makeコマンドのエラー
-
コマンドプロンプトですべてのU...
-
デフォルトのショートカットキ...
-
ディスクの空き容量を取得する...
-
JP1起動バッチについて
おすすめ情報