プロが教える店舗&オフィスのセキュリティ対策術

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

参考になるソースを公開している統合開発環境のソフトはありませんか?

A 回答 (5件)

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

    • good
    • 0

統合開発環境ではありませんが、emacs系のエディタは


エディタのバッファ上でシェル(コマンドプロンプト)を実行でき、結果もエディタのバッファへのインサートになります。
Windowsだと,Mule for Win32,Meadow,xyzzyのソースが参考になると思います。

Windowsでの実現方法は、おそらくパイプを使ってSetStdHandleで実行するコマンドの標準出力を読み取る形だろうと推測します。
多分プロセスを新規に作成し標準出力をパイプにリダイレクト(SetStdhandle)し、CreateProcessでハンドルを継承したプロセスとして目的となるコマンドを実行し、
パイプから読み取るという形になるんじゃないかと。
unix系ならpipe作ってforkしてclose,dupしてexecって感じですが。(こっちなら経験有り)
リダイレクトはshellがやってますから、unix系ならshellのソースが参考になるんでしょうが、Windowsだとコマンドプロンプトのソースは簡単には入手できませんから、似たことをしているソフトのソースが参考になると思いますが・・・今のところ、emacs系エディタしか思いつきません。

>できるだけ規模の小さいもののソースが良いです。
統合開発ソフトを要求していて小さいソースというのはちょっと無理な要求じゃないですか?
該当部分はたいしたサイズじゃないように思いますから、まずは見てみるのがいいと思いますが。
    • good
    • 0

>参考になるソースを公開している統合開発環境のソフトはありませんか?


統合開発環境wide studioがソースを公開しています。
参考URLを参照してください。

参考URL:http://www.widestudio.org/

この回答への補足

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

補足日時:2005/07/31 22:50
    • good
    • 0

質問には書いてありませんが、これはWin32を前提としているのですよね。



それであれば、SetStdHandleで標準入出力先を切り替えることが可能です。
    • good
    • 0

趣旨が違っているかもしれませんが...



コンソールに出力される文字数が多すぎて画面が流れてしまうのであれば、出力をリダイレクトしてファイルに保管しておき、エディタ等で開けば良いのでは?

例えば

C:\>DIR A: >dir.txt 2>&1

最後の2>&1は標準エラー出力を標準出力へリダイレクトするという指示です。
    • good
    • 0
この回答へのお礼

ありがとうございます。

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

お礼日時:2005/07/31 18:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!