• 締切済み

system関数(Windows)の戻り値!!

terra5の回答

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.1

system()がもともとそういう仕様の関数なので, プログラムの実行をsystemで行っている限りはできません。 別の方法で実行するしかないでしょう。 exec()等を調べてみてください。

関連するQ&A

  • visual studioでsystem関数

    visual studio 2005でsystem関数を使っていました. system("notepad"); は難なく実行できました. 他の実行ファイルも実行できるかと思い 「C:\Program Files\IrfanView」にある「i_view32.exe」を実行しようと思い, system("i_view32.exe"); で「デバックなしで開始」で実行させたところ 'i_view32.exe'は,内部コマンドまたは外部コマンド, 操作可能なプログラムまたはバッチ ファイルとして認識されていません. とエラーが出ました. もちろんC:\Program Files\IrfanViewのPATHは通してあります. しかしDebugフォルダにあるプログラムの実行ファイルをクリックで実行させたところ普通にi_view32.exeは起動しました. 「デバックなしで開始」で起動させたいのですがどうすればよいのでしょうか? 分かる方いたらよろしくお願いします.

  • PHP System関数が動作しません

    サーバー上の、あるphpファイル(sample_c.php)をシステム関数を使用して実行する必要があり、以下の流れのプログラムを作成しました。 sample_a.php でSubmit sample_b.php でSystem関数でsample_c.phpを呼び出し sample_c.php で実行 です。 <? /* sample_a.php */ ?> <form action="sample_b.php" method="post"> <input type="hidden" name="login" value="sample_user"> <input type="hidden" name="action" value="trigger_b"> <input type="submit" value="submit"> </form> <? /* sample_a.php */ ?> <? if($_POST['action'] =="trigger_b") { $login = $_POST['login']; system("sample_c.php $login"); header('Location: sample_a.php?action=fin'); exit; } else { header('Location: sample_a.php?action=error'); exit; } ?> <? /* sample_c.php */ ?> $_SERVER['argv'] で受け取った値を処理 ----------------- 3つのファイルは全て同じ階層に配置してあります。 sample_a.phpでsubmitすると、sample_a.php?action=fin にリダイレクトするのですが、 sample_c.php内の動作が実行されていません。 中身はDB接続して、テーブルに保存する単純なsql文が入っていて、sample_c.php単体での動作は確認しています。 (単体テストの場合は$_SERVER['argv']の代わりに変数に値をセットして実行しています。) System関数で変数を受け渡さずに system("sample_c.php $login"); を system("sample_c.php") として実行してもうまくいきません。; 原因が分かるかたがいらっしゃれば教えてください。 お願いします。

    • ベストアンサー
    • PHP
  • CreateProcess関数と実行後の戻り値について

    VB6からCで作られたEXEを実行した戻り値を取得したいのですが どのように記述すればよいのでしょうか? 制御が戻るまで固まらずに待ち続けるには CreateProcessを使うと良いとは思いますが、 notepadなど一方的に動作させて終了するようなサンプルしかなく、 戻り値を取得するサンプルは見当たりませんでした。 戻り値といってもCのEXEは結果を標準出力で表示されるものですが・・・ 何か良いサンプルはあるでしょうか? CreateProcessを使わない方法でも構いません。 r = CreateProcess( _ cmd, _ param, _ ByVal 0&, _ ByVal 0&, _ 0, _ NORMAL_PRIORITY_CLASS, _ ByVal 0&, _ vbNullString, _ si, _ pi _ )

  • CreateFile が ERROR_PATH_NOT_FOUND のエラーになる

    VC++を使っています。OSは Windows2000 です。 CreateFile で指定するファイル名をフルパスで指定し、EXEを同じ ディレクトリに置いて実行したところエラーとなり、詳細コードが ERROR_PATH_NOT_FOUND でした。 プログラムは以下のようになっています。 #define AAA "c:winnt\\system32\\AAA.log" hOpen = CreateFile( AAA, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 上記プログラムの AAA.exe を system32下に置いて実行すると、 パスが不正だと怒られてしまいます。。。 AAA.exe を別ディレクトリで実行すると、sysytem32下にちゃんと ファイルが作成されます。 AAA.exe を CreateProcess する BBB.exe を造って試しましたが、 やはり BBB.exe が system32下にあると駄目でした。 どうやらカレントディレクトリが同じだと駄目みたいです。 「"AAA.log"」とせずにフルパスとしているのは以下の理由のためです。 ・ファイルは必ず system32下に作成したい。 ・AAA.exe は必ず system32下にある。 しかし、BBB.exe が必ず system32下にあるとは限らないため、 「"AAA.log"」とした場合、BBB.exe を実行したディレクトリに 作成されてしまう。 CreateFile には今回のような制限があるのでしょうか??? #ヘルプを見る限り、書いてないです。。。

  • system関数について

    c++ CLRでプログラミングしてます。 system関数を利用し、"Picture Manager"で任意の画像を表示したいのですがうまくいきません。 system("C:\\Program Files\\Microsoft Office\\Office12\\OIS.EXE D:\\Image\\1.JPG"); 上記のように指定してもなにも起こりません。 DOS窓では、 C:\Program Files\Microsoft Office\Office12>OIS.EXE d:\Image\1.JPG で動作するのですが・・・。 詳しい方おられましたら、ご教授ください。

  • system()関数の使い方について

    PHPのsystem()関数を使ってWindowsのアプリケーション(C:\Program Files\MeCab\bin\mecab.exe)を実行しようと試行錯誤しています。 試行錯誤しながら以下のようなコードを書いたのですが、何も結果が返ってきません。 <?php $msg = system('C:\Program Files\MeCab\bin\mecab.exe C:\Program Files\MeCab\test-sjis.txt'); echo $msg; ?> 実験環境は、Windows XPにApacheを立ててPHP5をインストールしています。 動かなかった原因についてご指摘をいただけますと大変助かります。どうぞよろしくお願いいたします。

    • 締切済み
    • PHP
  • fortran a.exe システムエラー

    プログラミング初心者です。  コンパイルした後、a.exeファイルはつくられるのですが、いざプログラムを実行しようとすると     ウィンドウタイトル:「a.exe -システムエラー-」   本文:コンピュータにlibgfortran-3.dll がないのでプログラムを実行できません。      プログラムを再インストールしてください。     のようなエラーが出ます。        どうすればいいのでしょうか?

  • system関数のエラー検出

    UNIXのmanで調べたところ、system関数(コマンド)はエラー時、-1をかえし、errnoに"EAGAIN","EINTR","ENOMEN"を代入するようなのですが、 実際にプログラムにくみこんでみると、1を返しているようです。 (systemで実行するコマンド名をわざと間違えて実行しています。) これでは、systemで実行しようとしているコマンドが1を返しているのか、systemでエラーが起きているのか判断できません。 どのように判定すればよいのでしょうか。

  • VC++のCOMのデバッグ方法について

    VC++でつくられたCOMをデバッガを使ってデバッグしたいのですが どのようにすればいいのか、よい手段がわからず困っています。 いま担当しているプログラムの作りとしては、 2つの実行可能形式ファイル(AAA.exeとBBB.exe)があって、 AAA.exeは、 単独で動かした場合は自分のクラスをレジストリ登録/解除するプログラムで それ以外にもいくつかの関数(後述のfunCCC関数やログ出力関数)を実装しています。 BBB.exeは、CoCreateInstance関数を使用してAAA.exe内のクラスのオブジェクトを作成して その中で定義されている関数(funcCCC)にアクセスしています。 AAA.exeを実行してCOMがレジストリ登録されていることは レジストリエディタで確認できていて、 また、BBB.exe内でCoCreateInstance関数が成功していることも、 funcCCCが実行されて正常で結果が戻ってきていることもプログラムの実行結果からわかります。 この状態で BBB.exeからfuncCCCをコールしたときに AAA.exeのfuncCCCにステップインしてデバッグしたいのですが このようなことは、たとえばVisualStudio(2003)のデバッグ機能でできるのでしょうか。 デバッグしたい理由としては、AAA.exeの単体テストを行うためと、 あと、AAA.exe内のログ出力関数が AAA.exeを単独で起動したとき、つまり 自分のクラスをレジストリ登録するときは正常にログ出力されているのですが BBB.exeからfuncCCCを実行したときは、 funcCCC内で同じログ出力関数をコールしているのにログが出力されていないので デバッガを使って内部でどういう状態になっているのかを確認したいのです。 ログが出力されないので MessageBox関数を埋め込んでトレースや変数の内容を確認しているのですが その結果ではAAA.exeを単独で実行したときと同じように ログ出力関数がコールされているように見えます。 また DebugBreak関数を使う方法というのを見かけたので funcCCC内でDebugBreak()を実装してみたのですが その場合は、DebugBreakのところでプログラム(BBB.exe)が終了してしまいます。 COMについて認識違いがあればご容赦下さい。 よろしくお願いいたします。

  • 【C++】外部プログラムを呼んで、そのプログラムから値を取得したい

    【C++】外部プログラムを呼んで、そのプログラムから値を取得したい 現在、windowsXp pro でVC2008コンパイラで 普通のC++のプログラムを組んでいます。 コマンドプロンプト上で、C++プログラム(aaa.exe)を実行し、 そのaaa.exeから別のC++プログラム(bbb.exe)に引数を渡して 実行しようと思います。 このとき、bbb.exeで処理したデータ(xxx)をaaa.exeに返したい のですが、どういう方法があるのでしょうか。 (例えば、aaa.exeからbbb.exeに4つのint型引数k,l,m,nを渡し、  bbb.exe内で、k+l, m-nを計算して、2つの計算結果を返したい  と思います。) (aaa.exe、bbb.exe間のデータ渡しにファイルを使わないという  条件でお願いします。) サンプルプログラムを提示して頂きたくお願いします。