• 締切済み

コンソールアプリの入出力

コンソールアプリのコンパイラをコマンドライン上で実行しているんですが、コンパイルエラーが長いと最初の方のエラーが見えないので、統合開発環境のソフトのような物を作りかけているところなんですが、たとえば DIR A: というコマンドを送り、結果を受け取るだけの簡単なソフトだとしてもAllocConsole()という関数を使わずにやるのは難し過ぎるでしょうか? 参考になるソースを公開している統合開発環境のソフトはありませんか?

みんなの回答

  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.5

イマイチ趣旨がわかりませんが、コマンドラインの結果を受け取るのであれば、popen じゃダメなんですか?

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

統合開発環境ではありませんが、emacs系のエディタは エディタのバッファ上でシェル(コマンドプロンプト)を実行でき、結果もエディタのバッファへのインサートになります。 Windowsだと,Mule for Win32,Meadow,xyzzyのソースが参考になると思います。 Windowsでの実現方法は、おそらくパイプを使ってSetStdHandleで実行するコマンドの標準出力を読み取る形だろうと推測します。 多分プロセスを新規に作成し標準出力をパイプにリダイレクト(SetStdhandle)し、CreateProcessでハンドルを継承したプロセスとして目的となるコマンドを実行し、 パイプから読み取るという形になるんじゃないかと。 unix系ならpipe作ってforkしてclose,dupしてexecって感じですが。(こっちなら経験有り) リダイレクトはshellがやってますから、unix系ならshellのソースが参考になるんでしょうが、Windowsだとコマンドプロンプトのソースは簡単には入手できませんから、似たことをしているソフトのソースが参考になると思いますが・・・今のところ、emacs系エディタしか思いつきません。 >できるだけ規模の小さいもののソースが良いです。 統合開発ソフトを要求していて小さいソースというのはちょっと無理な要求じゃないですか? 該当部分はたいしたサイズじゃないように思いますから、まずは見てみるのがいいと思いますが。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

>参考になるソースを公開している統合開発環境のソフトはありませんか? 統合開発環境wide studioがソースを公開しています。 参考URLを参照してください。

参考URL:
http://www.widestudio.org/
muenos
質問者

補足

ありがとうございます。 まだ見ていませんが、できるだけ規模の小さいもののソースが良いです。 バックグランドでコンソールと通信する部分が分かれば十分です。

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.2

質問には書いてありませんが、これはWin32を前提としているのですよね。 それであれば、SetStdHandleで標準入出力先を切り替えることが可能です。

  • 50100
  • ベストアンサー率28% (99/351)
回答No.1

趣旨が違っているかもしれませんが... コンソールに出力される文字数が多すぎて画面が流れてしまうのであれば、出力をリダイレクトしてファイルに保管しておき、エディタ等で開けば良いのでは? 例えば C:\>DIR A: >dir.txt 2>&1 最後の2>&1は標準エラー出力を標準出力へリダイレクトするという指示です。

muenos
質問者

お礼

ありがとうございます。 リダイレクトでエラーは見れましたが、ソフトの作成も進めたいです。

関連するQ&A

  • コンソールアプリ エンターを押さないと戻ってこない

    VisualStudio2005でコンパイルしたコンソールアプリですが、実行後、エンターを押さないとコマンドが戻ってきません。 何か対策でもあるのでしょうか? MSのC言語特有に何かがあるのでしょうか?

  • AKI-H83048で割り込みを使用してLEDを点滅させたいのですが、、、、

    はじめまして、組み込みソフト超初心者です。 割り込みタイマを使用してLEDを特定時間点滅させる、ということを行いたいのですが、コンパイルができず、頓挫しております。どなたか、アドバイス頂けませんでしょうか。 ・開発環境はAKI-H8 3048 ・割り込みを使用してLEDを点滅させるということを目的にCでソースをコーディングしています。 ・巷の参考書など参考にしてmain、割込関数、コーディングしました。 ・コンパイラはAKI-H8マイコンキットについてきた専用CコンパイラCC38Hを使用しています。(統合開発環境はありません) 上記の条件でコンパイルすると、interruptがイリーガルとエラーが出ます エラーの出ているコードは #pragma interrupt itu0_int(vect=24) の部分です。 参考書で、interruptはコンパイラによって使用できないようなことも読んだのですが、どうすればコンパイルできるのでしょうか、また、何が足りないのでしょうか なにぶん初心者なもので、正直質問の的が絞れていないのかも解らないのですが、とにかくまず動かしたいと思い質問させて頂きました。 同じ開発環境の方が居られましたら有難いです。 何とぞよろしくお願い致します。

  • llc system("dir").c

    llcのDOSコンパイラでsystem("dir");というソースを 含めると、その部分で実行時に 正しいコマンド インタープリタの名前を入力してください. (例 : C:\COMMAND.COM) >> というメッセージが表示されます。 #include <iostream.h> int main() { system("dir"); return 0; } このソースをDOSコンパイラ用に書き換えたいのです。 #include <stdio.h> int main() { system("dir"); return 0; } このようにするとllcでコンパイルできますが、おそらく #include <stdio.h>しか使っていないためにsystem関数がうまく 動作しないようです。 どうしたらシステム関数のようなことができますか?

  • コンソールアプリ内でDosコマンドを使用したい

    kirishima8と申します。 よろしくお願いします。 開発環境 WindowsVista business 32bit Visual Studio 2005 VC++ Win32アプリでコンソールアプリで、Dosのコマンドラインを利用したいのです。 新たにbatファイル等を作成・実行するのではなく、ずっと同一のコンソールウィンドウを利用し、かつ、Dosコマンドをプログラム側から利用できたらと考えています。 コマンドプロンプトのような機能を、自分で作ったアプリに実装させたいというのが最終的な目標となります。 MSDNで調べてみたところ、WriteConsoleInput()や関連APIが見つかりました。 しかしながら、パラメータの説明が何を指すのかという点が、現時点で私には解り辛いです。 何らかの情報をお持ちの方、ご教授ください。 未熟者ですので、上記では内容が伝わらないかもしれません。 何か不明な点がございましたら、お尋ねになってください。 よろしくお願いします。

  • コンパイルとメモリ容量について。

    宜しくお願いします。DOSの統合開発環境でプログラムしてますが、メモリが不足している為かコンパイルや編集が出来なくなります。プロの方達でもマイクロソフトのPWB等でやられた方はどのように問題を解決されたのでしょうか?大きいソースはコマンドラインからしか開発出来ないのでしょうか?マニュアル等も読んでみましたが解決の糸口が見えませんでした。VisualBaasicとかに乗り換えるしか無いでしょうか? 宜しくお願いします。

  • VC++(VS)でコンソールアプリ(複数ファイルからなる)を作成したい

    マイクロソフト社のVC++(Visual Studio 2008)で コンソールアプリケーションを作成しようとしております。 ファイルは複数ファイルからなり、 mainprogram.cpp -> 実行ファイル(mainprogram.exe) subprogram1.cpp -> オブジェクトファイル(subprogram1.obj) subprogram2.cpp -> オブジェクトファイル(subprogram2.obj) ・・・以下続く のように 1)サブプログラムをobjファイルとしてコンパイル 2)メインプログラムをコンパイルしてobjファイルとリンクし、   実行ファイルを作成する というような作業を行いたいと考えております。 以前はLinuxの環境でg++、makeを利用して このような構成のコンソールアプリケーションを作成しておりました。 が、VCに移行するに当り、どのようにプロジェクトファイル等を 構成して良いか分からず、出だしでつまづいております。 VCにもコマンドラインでコンパイルする方法 (cl, nmakeを使うんでしょうか。。。)があるみたいですが、 これらの手法について書かれている 書籍、サイト等を探すことが出来ないでおります。 VCに関して、このような使用法に対する解説がなされている書籍、 もしくはサイト等をお教え願えませんでしょうか? 宜しくお願い申し上げます。

  • VC++IDEで実行ファイルが生産されない

    Visual C++ 2008 の統合開発環境を使ってプロジェクトをビルドしたのですが、実行ファイルが生産されずに困っています。出力ウィンドウには コンパイルしています... リンクしています... コード生成しています。 コード生成が終了しました。 マニフェストを埋め込んでいます... とでました。しかしパソコン全体を探しても実行ファイルは見つかりません。コマンドラインコンパイルは問題なくできます。ソースコードは何度も見直したので間違いはないと思います。VC++の再インストールも行い、正常にインストールできました、とでたのですが、状況は変わりません。ちなみにパソコンはVistaです。説明不足のところがありましたら追記しますので、どうか回答よろしくお願いします。

  • MSILのような中間言語について

    調べたところ、http://www.atmarkit.co.jp/icd/root/63/57773363.html で、「マイクロソフトは、MSILを生成できるプログラム開発環境として、.NET Framework SDK(コマンドライン・ベースのプログラム開発環境を提供するソフトウェア・セット)やVisual Studio.NET(グラフィカル・インターフェイスを備えたプログラム開発環境)を開発し、いずれも2000年末から開発者向けのベータ版ダウンロード・サービスを開始した。」とあるのですが、同じC言語で作っていてもBorlandでコンパイルしたものと、VisualStudioのC++でコンパイルしたものでは実行のされ方が異なっているのでしょうか? また、こういったプログラムのコンパイルや実行に関して、OSはどの様に関わっているのでしょうか? よろしくお願いします。

  • 64bitの実行ファイルを実行する場合

    開発機(64bit)でCのソースをコンパイル・実行ファイル作成をし、本番機(64bit)に実行ファイルだけFTP転送します。 そして本番機には64bitのCのコンパイラ(cc)は入ってなく、32bitのものが入っています。 そういう環境のせいか、signal 11を出してプログラムは停止します。 #開発機では正常稼動しています Cの実行ファイルが実行されるときはコンパイラが影響するものなのでしょうか? #影響するようでしたら上記エラーが出るのも納得できるのですが。。 申しわけありませんが、何かアドバイスがありましたらよろしくお願いします。

  • コンソール出力をテキストに出力する方法(コンソール出力は残しつつ)

    【質問】  Perl内部で実行される実行ファイル(.exe)のコンソール出力(STDOUT,STDERR)をテキストファイルに出力したい。(Perlのコンソール出力も含む。) ※コンソール出力は残しつつ。 (コマンドプロンプトの)パイプとリダイレクトを使用して上手くいくかと思ったのですが、標準出力と標準エラーとでは標準エラーが先に出力されてしまい、本来出力される順番で出力されない。(標準出力はバッファにたまるため??) 何かいい方法はありませんでしょうか? 【環境】  Windows2000  Active Perl 5.8.8

    • ベストアンサー
    • Perl