Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。1,265件71VB.net上で対話型コンソールアプリケーションの実行について以前質問させて頂いた者です。正しくないコマンド列を受け取るとプロセスが終了してしまうようです。前回Rippleさんに頂いた回答では次のように書かれていました。mysqlコマンドは出力がリダイレクトされると動きが変わります。出力を最適化するため、出力先がコンソールかどうか判断してわざわざ動きを変えているようです。指定したので、私の作ったプログラムがリダイレクトを利用しているのだと理解できます。やり取りしているはずですが、それはどういったもので、VB.netから実行するときと何が違うのでしょうか?両者ともアプリケーションが対話型コンソールアプリケーションを実行するという構図は同じように思えるのですが...よろしくご教示お願い致します。個の銅バッジ前回の質問で、それはコンソールアプリケーション(mysql)側の問題である、といった指摘を受けていたかと思います。コメントありがとうございます。前回の質問では出力先がリダイレクトかコンソールかによって挙動を変えているとありました。Trueしているのでリダイレクトである事理解します。今回は逆にcmd.exeはどのようにしてコンソールアプリケーションと情報のやり取りをしているのか知りたく質問した次第であります。挙動の違いはコンソールアプリケーション全般ではなくmysqlコマンドに限った話のようなので、勝手ながらそのあたりの経緯を本文に織り込んでみました。意に沿わない内容になっているようでしたら、お手数ですがご指摘ください。端末=コンソールウィンドウを指しているハンドルが使われます。すると、標準出力を端末以外のハンドルに差し換える(リダイレクト)ことになります。起動時に「標準入出力が端末を指しているかどうか」を調べているため、上記のようなリダイレクトを行った場合に挙動が変わります。これはあるプロセスが別のプロセスを起動する際に使う一般的なAPIです。いう構造体を指定するのですが、この中に標準入出力・エラー出力のファイルハンドルを指定するフィールドがあります。してリダイレクトする場合はこれを使っているはずです。このパイプを指すようになります。このパイプとはプロセス間で共有できるトンネルのようなもので、作成すると入口と出口のファイルハンドルが得られます。これは実際のファイルを読み取り専用・書き込み専用で開いたときと同じように扱え、入口に書き込めば出口で読み取ることができます。受け取るのでしょうか。これはファイルでもなく、パイプでもなく、端末*2を指しています。Windowsでコンソールアプリケーションを起動するとコンソールウィンドウが生成されますが、このウィンドウに入出力するためのファイルハンドルも同時に用意されます。これが端末を指すファイルハンドルです。コンソールアプリケーションを作り、以下のようなプログラムを書いてみると面白いでしょう。この場合、VB.net側の標準入出力がそのまま使われることになるので・・・。個の銅バッジ回答ありがとうございました。端末と言うものの正体がまだ見えませんが、言語仕様だけではなく言語が走っているOSの事も知る必要がある事が分かりました。ありがとうございました。出力しますが、これらの入出力を一時的に変更するのがリダイレクトです。しては標準入力と標準出力を使うようにプログラミングされています。限っては、標準入力と出力が、ターミナルコンソール(cmd.exe)であるかどうかを内部でチェックして、動作を制御しています。エラーを無視する変数を無効にしています。正しくないコマンド列を受け取るとプロセスが終了してしまうようです。リダイレクトかどうかを独自に判断して、バッチモードで動くため、正しくないSQLはエラー終了するようになっています。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。C++のSystem関数について0MySQLにアクセスしようとすると、接続エラーが発生しアクセスできない。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。