• ベストアンサー
  • 困ってます

コマンド実行時に"&"を付けて実行するとバックグラウンドジョブで実行さ

コマンド実行時に"&"を付けて実行するとバックグラウンドジョブで実行されますが、"&"が付けられてコマンドが実行されたかを判別する方法はありますでしょうか。 @ARGVでは特殊文字は引数として取得できないようでした。"&"も含めてコマンドラインの引数を取得することは可能かお教え下さい。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数188
  • ありがとう数12

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1
  • Tacosan
  • ベストアンサー率23% (3656/15482)

システムがわからないとなんともいえないんだけど, そのパターンだと & はシェルに食われるからそもそもプログラムに渡らない. つまり, 「コマンドライン引数からなんとかする」ことはできない. 場合によっては端末の割り当てなんかからわかるかもしれんが....

共感・感謝の気持ちを伝えよう!

質問者からのお礼

やはりそうですよね。ご回答いただきありがとうございました。

関連するQ&A

  • 実行待ちジョブの一括削除

    batch(at)コマンドによる実行待ちのジョブを削除する際には ・atrm [job number] を用いますが、実行待ちのジョブを一気に全て削除するコマンドはあるのでしょうか?よろしくお願いします。

  • コマンドプロンプトにおけるコマンドライン引数の展開

    こんにちは。 コマンドプロンプトにおける、コマンドライン引数の展開のされ方について、質問させて下さい。 具体的に言うと、二重引用符で囲まれたコマンドライン引数が、 どのようにして各コマンドに渡されるのかを詳しく知りたいと思っています。 まずコマンドプロンプトが、コマンドラインの特殊文字を展開し、 それらが各コマンドに渡される事は知っています。 特に、2つの二重引用符で囲まれた文字列に含まれる特殊文字は普通の文字として扱われる事、 二重引用符は「\」によってエスケープできる事は知っています。 これらを理解した上で、以下のような事を試しました。 まず、以下のような、1.cというCプログラムを作成し、ビルドしました。 ____________________ #include <stdio.h> int main(int argc,char *argv[]) { int i; for(i=1; i<=9; i++) if(argv[i]) printf("argv[%d]=「%s」\n", i, argv[i]); return 0; } ____________________ 次に以下のようなバッチスクリプトを作成しました。 ____________________ @echo off echo %%~1:「%~1」 echo %%~2:「%~2」 echo %%~3:「%~3」 ____________________ その後、以下のようにして同じコマンドライン引数を、これらのプログラムに渡すと、 以下のような結果になりました。 ____________________ C:\Users\kei >1.exe "\"ab c\"" de argv[1]=「"ab c"」 argv[2]=「de」 C:\Users\kei >1.bat "\"ab c\"" de %~1:「\"ab」 %~2:「c\""」 %~3:「de」 ____________________ なぜ両者の出力結果に、違いが出るのかが分からず困っています。 コマンドプロンプロの仕様だと、1.exeの出力は予想通りだったのですが、 1.batの出力では、コマンドライン引数がスペースで区切られていると、 それらを二重引用符で囲んでも、1つの引数としてみなしてくれませんでした。 これだけでは不十分だと思い、以下のように、 Windowsコマンドではない、ダウンロードしてきたlessと Windowsコマンドであるtypeで、同じ事を試しました。 ____________________ C:\Users\kei >less "\"ab c\"" fa ab c: No such file or directory fa: No such file or directory C:\Users\kei >type "\"ab c\"" fa 指定されたファイルが見つかりません。 処理中にエラーが発生しました: \ab パラメータが間違っています。 ____________________ この結果をみると、lessでは1.exeと同じようにコマンドラインが解釈され、 moreでは1.batと同じようにコマンドラインが解釈されているようです。 こういった事実は 「まずコマンドプロンプトが、コマンドラインの特殊文字を展開し、 それらが各コマンドに渡される」 というコマンドプロンプトの仕様と矛盾しているので、頭が混乱しています。 こういった問題について、何か御存じの方がいらっしゃれば、情報提供をお願い致します。 長くなりましたが、よろしくお願い致します。

  • 実行中のコマンドを、ログアウト後もバックグラウンドで実行させる方法(ksh)

    ksh環境において、実行中のコマンドをログアウトしてもそのまま実行させる方法を教えてください。 ctrl+zでサスペンドにし、jobsでjob番号を確認してbg %<job番号>でバックグラウンドにするのはできましたが、exitでログアウトしターミナルを抜けるとjobが無くなってしまいます。 bashならdisownというコマンドがあるそうなのでdisown %<job番号>でいけるのではないかと思うのですが、kshではdisownに相当するようなものがあるのでしょうか? コマンド実行前なら『nohup <コマンド> &』でできるのは確認済みです。

  • コマンドとコマンドラインとコマンドラインオプションの違いを教えてください。

    ただ今Cの関数を勉強しているのですが、勉強用HPに ************************ int main(int argc, char *argv[ ]) 戻り値:int型、引数:argc, argv 後者は、コマンドライン オプションを受け付ける。 argc はオプションの数、argv はオプションの内容となる。 ************************ とあります。 そこで質問なのですが、コマンドラインオプションとは何ですか? また、 ・コマンド ・コマンドライン ・コマンドラインオプション の違い、それぞれの意味も教えてください。 マックのコマンド+s、コマンド+vみたいなものですか? それともunixのcdや./のようなものでしょうか。 わからない単語が出てくると、 そこで頭が混乱してしまい先に進めない性質なので困っています。 どうぞご教授よろしくお願いします。

  • SQL Server 2008のジョブで次のコマンドを実行したら、いつ

    SQL Server 2008のジョブで次のコマンドを実行したら、いつまでも終了しません。 "C:\Program Files\Microsoft Office\Office12\Office12\MSACCESS.exe" "D:\XXX\PM.accdb" /x M_Create 現状としては、 1、タスクマネジャーを確認したら、Accessがちゃんと立ち上がりました。また、PM.accdbと同じフォルダにPM.laccdbというファイルも生成されました。 2、ジョブの履歴を見たら、実行ユーザーはジョブの持ち主ではなく、「サーバー名\SYSTEM」というものです。これはSQLServerエージェントサービスアカウントのことですね。 3、上記コマンドをコマンドプロンプトで実行すると、無事終了しました。 4、関連ファイルやフォルダにはEveryOneにフル権限を与えています。 全般的に見ると、実行ユーザーのせいではないかと思いますが、同じようなことを経験した方がいらっしゃいますか。 何の情報でもいいですから、ぜひ教えてください。 よろしくお願いいたします。

  • シェルスクリプトでバックグラウンドで実行したコマンドの実行結果を取得するには

    OS redhat linux シェル bornシェル シェルスクリプトでバックグラウンドで複数のコマンドを実行し、 すべてのコマンドが正常に終了したら次の処理へ進むみたいな事をしたいのですが、可能でしょうか? 直列にすればよいのですが、処理時間短縮の為、並列に処理したいのです。 宜しくお願いします。

  • rshを使うスクリプトをバックグラウンド実行

    Linux+Perlでのお話です。 内部でsystem関数を使ってrshコマンドを実行しているperlスクリプト(以下、スクリプトAという)があります。 スクリプトAをフォアグラウンドで実行するとうまく流れるのですが、バックグラウンド実行すると、rshコマンドを実行した直後でjobが止まってしまいます。 もっと詳しく言いますと、スクリプトAのrshコマンドは、ディスクを共有しているリモートマシンに対して、スクリプトBを実行するように指示しています。 スクリプトBではとある計算を行なっており、その計算結果をファイルに出力しています。 そして、その結果をスクリプトAで読み込んで後処理を行うというものです。 ----- …(前処理)… system("rsh (ホスト名) \"(スクリプトB実行コマンド及び引数) 1> /dev/null 2> /dev/null\""); # ここでjobが止まってしまいます。 # ここで標準出力(ログファイルにリダイレクトしてる)に何か出力しようとしても、何も出力されてません。 (スクリプトBの結果ファイルの読み込み) …(後処理)… ----- Jobが止まってしまうと言っているのは、jobsコマンドで見ると"job stopped"となっている状態のことを言っています。 この状態でスクリプトBの結果はファイルに出力されているので、rshのコマンドはうまく投げられていると思います。 (「rshやsshは標準入力が期待されてるとバックグラウンド実行が出来ない」(?)というような記述をどこかで見かけたので、念のためrshに"< /dev/null"の記述を加えてもみたのですが、変わりませんでした) その後、止まっているjobをfgコマンドでフォアグラウンドで再開させると、最後まで問題なく実行されます。 フォアグラウンドで実行すればうまくいくのに、バックグラウンドで実行すると止まってしまうのが理解出来ません。 これは何が原因なのでしょうか。 そして、どうしたら解決出来るのか。 どなたかご存知でしたら、ご教示頂きたくお願い致します。

    • ベストアンサー
    • Perl
  • ServletからバックグラウンドでJavaを走らせたい

    Javaのバッチをコマンドラインからでなく、Servletから非同期で走らせたいのですが、うまくいきません。 多数サイトを見ましたが引数なしの場合でも、JavaをServletのバックグラウンドで走らせる事はできませんでした。5時間はまっています(T_T) Process process = Runtime.getRuntime().exec("java C:\\java\\src\\batch\\testJava argv01 argv02"); ■環境は、JDK1.4.1、Tomoat4.1.6、Windos2000で、 javaを打ち間違えたら、例外が発生したのでjavaだけはとりあえずパスがとおっているようです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • JAVAをバックグラウンドで実行したい

    Debian GUN/Linux3.1を使っているんですが、 Airproxyをバックグラウンドで実行させたいんです。 一体どうすればいいでしょうか?何か引数でもあるのでしょうか。 よろしくお願いします。 使用ソフト jre1.5.0_02 airproxy 0.2.5 今は、 cd /usr/local/bin/airproxy/ ←こうしないと何故か設定ファイルを読まない。 /usr/java/jre1.5.0_02/bin/java -jar airproxy.jar というふうに実行しています。 バックグラウンドで実行しないため、 rc.*dに入れてしまうと起動処理がairproxyのところで止まってしまいます。 よろしくお願いします。

  • Cocoa をコマンドラインから実行して引数を受け取りたい

    C・Objective-C に関して全くの初心者ですが、よろしくお願いします。 Cocoa で作ったアプリをコマンドラインから実行して、渡した引数を NSObject のサブクラスで受け取りたいのですがどうしたらよいでしょうか。 main.m の main 関数で受け取る方法はわかったのですが、サブクラス MyObject.m 内の任意のメソッドに渡す方法がわかりません。 // 引数を受け取って表示する int main(int argc, char *argv[]) {   fprintf(stdout, "%s\n", argv[1]);   return NSApplicationMain(argc, (const char **) argv); } ご教示いただけますと幸いです。