system関数にてバッチファイルを実行しようとすると、
復帰値:-1073741510
にて異常が発生します。
原因は何でしょうか?
それだけの情報で的確な答えを導き出せる神はいないと思います。
具体的な環境、バッチファイルの内容等
解決の糸口になる情報を提示してください。
確かにそのとおりですね。
すみません。
発生している環境は、
Windows2000Server SP4です。
プログラムの開発環境は、VC6です。
バッチファイルの内容はかけませんが、
バッチファイルの一番最初で出力しているログが出ていないので、
system関数からの起動時に何らかの原因により
エラー(復帰値:-1073741510)が発生していると考えています。
どうか神様お願いします。
バッチファイルの内容が書けないとのことですが、そこが一番重要だと思います。
ログ出力させているとの事ですが、そこの部分だけでも出せませんか?
他には、
・バッチファイルの内容を削っていってみるのはいかがでしょうか。
・バッチファイルの内容をすごく単純なもの・・・例えばディレクトリ変更だけの内容とか
にした場合どうなるのか。
・system関数で呼び出さず(プログラムを使用せず)、単純にバッチファイル実行処理で正常に動くのか。
試せることはたくさんあると思います。
なんにせよ、提示されている状況だけでは、まだ情報不足かと。
現状までの調査として、
①バッチファイルの中身をログ出力のみにして実行したのですが、
やはりだめでした。
②system関数を使用せずにバッチファイルを手動で実行すると、
正常に動作することができました。
また、ほとんどの環境では動作できるのですが、
1部の環境のみで本現象が発生している状況です。
バッチファイルの内容も確認しているのですが、
system関数自体の情報が調べられていないので、
情報がほしい状況です。
よろしくお願いします。
一部の環境のみで発生するとなると、
バッチファイルの処理内容/プログラム自体の問題ではないのかもしれません。
system関数をMSDNで調べてみましたか?
戻り値自体は、
コマンド インタプリタが返した値を返します。
エラーならば、-1を返す。
となっています。
また、エラーが発生している場合、グローバル変数のerrnoに固有の値がはいるそうです。
そちらの値は該当するものがあるでしょうか?
(復帰値:-1073741510というのは、system関数の戻り値のことですよね?)
異常が発生してその行で落ちてしまうとなると、読めませんが。
はい、MSDNで調べました。
そこで、system関数の復帰後に、
system関数の復帰値、errnoを出力するようにしたところ
復帰値:-1073741510
error:0
と出力されました。
以上の情報で何か分かるでしょうか?
よろしくお願いします。
-1073741510は、16進で0xC000013A
エラー(?)の内容は、処理途中にCtrl+Cでアプリケーションが終了された
ということです。
おそらくバッチファイルの処理途中で強制終了したためのエラーだと考えられます。
ログを出しているとの事でしたが、ファイルを作成しようとしていた場合、
そのファイル作成が失敗している(途中で飛んだ?)可能性があります。
そこが原因かと思われます。
少し試してみましたが、(WinXP SP2,VC6,Win32 Console Application)
バッチファイル内は、
echoをONにして、メッセージ表示
ファイル作成
の内容にした場合、ファイルを作成できず、そこで止まってしまったようです。
Ctrl+Cで強制終了すると、エラーとなり上記のエラー値が出ます。
(ソフトは強制終了される)
的外れだったらごめんなさいね。
結局解決方法は導き出せていないし・・・
自分の環境だと、
手動でバッチファイルを実行したときに最初1度だけは正常にいけたのだけれども、
2度目から手動でも同様に無事終了できない状況となります。(Ctrl+Cで終了しか手が無くなる)
少し呆けていた模様。
話題と少しずれますが、前述のファイル作成についての補足。
copy con ***.txt(***は適当な名前)
でファイルを作成していて、Ctrl+Cで無いと脱出できないと勘違いしていましたが、
実際は、Ctrl+Zで脱出(?)可能でした。
copyのコマンドの後、打ち込んだ文字がファイルに記載されるんだった・・・
終了にCtrl+Zを用いればよしと。
そうすれば、以下の処理もしっかりやってバッチファイルは終了する。
こんな流れになります。(エラー発生せず無事終了可能)
ズレまくってしまった。申し訳ないです。
いろいろありがとうございました。
参考にして引き続き調査を行いたいと思います。