system関数により呼び出されたプログラムNo.03557
あべのり さん 03/12/11 21:20
 
例えば
#include <stdlib.h>

int main(int argc,char *argv[]){
system("ls");
return 0;
}
というようなプログラムを作り「プログラム実行」にて実行をすると,コマンドプロ
ンプトが現れそこで実行されてしまい,秀丸上に出力がなされません.
普通のプログラムと同様に秀丸上に出るようには出来ないでしょうか?

[ ]
RE:03557 system関数により呼び出されたプNo.03571
秀丸担当 さん 03/12/12 18:36
 

>というようなプログラムを作り「プログラム実行」にて実行をすると,コマンドプロ
>ンプトが現れそこで実行されてしまい,秀丸上に出力がなされません.
>普通のプログラムと同様に秀丸上に出るようには出来ないでしょうか?

WindowsXP SP1で、同じプログラムを作りやってみたところ、コマンドプロンプ
トのウィンドウが一瞬出て、出力は秀丸上にすることができました。
たぶんOSによって動作が違うのだと思います。
Windowsのバージョンは何でしょうか。

[ ]
RE:03571 system関数により呼び出されたプNo.03582
あべのり さん 03/12/13 01:14
 
>WindowsXP SP1で、同じプログラムを作りやってみたところ、コマンドプロンプ
>トのウィンドウが一瞬出て、出力は秀丸上にすることができました。
>たぶんOSによって動作が違うのだと思います。
>Windowsのバージョンは何でしょうか。

すいません.書き忘れました.
Microsoft Windows 2000 SP4上で,コンパイラはMicrosoftのcl.exe(VC++.NET)です.
bccも同じ状況になりましたが,gcc(cygwin)は秀丸上に出力されました.

よろしくお願いします.

[ ]
RE:03582 system関数により呼び出されたプNo.03598
秀丸担当 さん 03/12/15 16:12
 

>すいません.書き忘れました.
>Microsoft Windows 2000 SP4上で,コンパイラはMicrosoftのcl.exe(VC++.NET)です.
>bccも同じ状況になりましたが,gcc(cygwin)は秀丸上に出力されました.

こちらは、WindowsXPとWindows2000SP3で、VC++5.0(Developer Studio97)で作成
したものです。Windows2000SP3で試してみたところ、コマンドプロンプトのウィ
ンドウも出ることがなく、秀丸上に出力されました。
実はVC++.NETが無いので、もし問題なければサンプルのプログラムをバイナリで
送っていただくことは可能でしょうか。
もし送っていただける場合、あて先は xxxxxxxx@nifty.ne.jp まで、秀丸担当宛
てと書いて送ってください。
お手数をおかけしまて申しわけありません。よろしくお願いします。

[ ]
RE:03598 system関数により呼び出されたプNo.03608
あべのり さん 03/12/15 18:42
 
>実はVC++.NETが無いので、もし問題なければサンプルのプログラムをバイナリで
>送っていただくことは可能でしょうか。
>もし送っていただける場合、あて先は xxxxxxxx@nifty.ne.jp まで、秀丸担当宛
>てと書いて送ってください。
>お手数をおかけしまて申しわけありません。よろしくお願いします。
別に送らせていただきます.ありがとうございます.

[ ]
RE:03608 system関数により呼び出されたプNo.03618
秀丸担当 さん 03/12/16 18:48
 

>別に送らせていただきます.ありがとうございます.

ファイルを頂きました。ありがとうございます。
Windows2000SP3でやってみたところ、問題なくできました。
lsというコマンドは普通無いので、エラーになっているのではないでしょうか。
[動作環境]→[その他]→[プログラム実行]→[プログラム実行で標準エラー出力
も出力する]もチェックしておくと、

'ls' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

というようなものが出力されます。
チェックしておかないと、何も出力されません。

チェック状態に関わらず、ls.batを作って中身に dir とだけ書いたファイルを
作っておくと、ファイルの一覧が出力されます。

[ ]
RE:03618 system関数により呼び出されたプNo.03623
あべのり さん 03/12/17 03:01
 
>Windows2000SP3でやってみたところ、問題なくできました。
>lsというコマンドは普通無いので、エラーになっているのではないでしょうか。
>[動作環境]→[その他]→[プログラム実行]→[プログラム実行で標準エラー出力
>も出力する]もチェックしておくと、
>
>'ls' は、内部コマンドまたは外部コマンド、
>操作可能なプログラムまたはバッチ ファイルとして認識されていません。
>
>というようなものが出力されます。
>チェックしておかないと、何も出力されません。
>
>チェック状態に関わらず、ls.batを作って中身に dir とだけ書いたファイルを
>作っておくと、ファイルの一覧が出力されます。
うちではcygwinが入っているので「ls」が意味をもちます.
存在しないコマンドかls.batだと上にあるように秀丸内に出力されるようです.
cygwinのせいかと思い,

#include <stdio.h>

int main(int argc,char *argv){
printf("test\n");
return 0;
}
だけからなるプログラムを作成しPATHの通ったフォルダにおいてこれを実行してみた
ところやはり失敗しました.

うちだけなのでしょうか??

[ ]
RE:03623 system関数により呼び出されたプNo.03631
秀丸担当 さん 03/12/17 19:09
 

>うちではcygwinが入っているので「ls」が意味をもちます.
>存在しないコマンドかls.batだと上にあるように秀丸内に出力されるようです.

そうでしたか。
SP3とSP4の違いかと思い、SP4でやってみましたが、やはり出力されました。

printfのプログラムにしても、出力されました。
どうも、そちらだけの現象のようです。
cygwinが関係しているのでしょうか。
他に環境的に違うと思われることはないでしょうか。

[ ]
RE:03631 system関数により呼び出されたプNo.03637
あべのり さん 03/12/17 20:06
 
>そうでしたか。
>SP3とSP4の違いかと思い、SP4でやってみましたが、やはり出力されました。
>
>printfのプログラムにしても、出力されました。
>どうも、そちらだけの現象のようです。
>cygwinが関係しているのでしょうか。
>他に環境的に違うと思われることはないでしょうか。

う〜ん,他には思い当たりません.
また何か思い当たるところがあれば書き込ませて頂きます.

お手数おかけしました.

[ ]
RE:03637 system関数により呼び出されたプNo.03647
秀丸担当 さん 03/12/18 15:37
 

>う〜ん,他には思い当たりません.
>また何か思い当たるところがあれば書き込ませて頂きます.

cygwinを入れてみて、ls.exeを実行してみましたが、できました。
何か思い当たることがあったらよろしくお願いします。

[ ]
RE:03647 system関数により呼び出されたプNo.03659
あべのり さん 03/12/18 22:49
 
>何か思い当たることがあったらよろしくお願いします。
何でもいいからと一応書いてみます.

もともとはdviout(http://akagi.ms.u-tokyo.ac.jp/dvitest.html)に付属しているsr
ctex.exeを実行した際に何も表示されなかったのを疑問に思いソース(dvioutに付属)
を見つつsystemに問題があるのではと思ったのでした.

srctex自体はTeXシステムがインストールされていないと意味をなしませんが,
srctex platex (ファイル名)
とすることによりplatexの出力を吐き出しながらコンパイルされます.
しかし,秀丸にて「srctex platex %b」を実行すると何も表示されません.

TeXをインストールしないとならないので非常に面倒ではあると思いますが,もしよ
ろしければこちらの方も見ていただけるとありがたいです.

[ ]
RE:03659 system関数により呼び出されたプNo.03661
Iranoan さん 03/12/18 23:35
 
 あべのりさん今日は、Iranoan です。
> しかし,秀丸にて「srctex platex %b」を実行すると何も表示されません.
 私の環境は Windows98 なので違いますが、「srctex platex %b > con」も
含め問題なくできます。標準で付いている「cmd.exe /c dir /b > con」や
「cmd.exe /c echo %PATH% > con」等は問題なくできるのでしょうか? 特に後
者は、あべのりさんの意図通りに PATH が出力されますか?
 秀丸からだけ「srctex platex %b」というのは、何かシステムの設定がおか
しくなっているような気がします。だけど gcc でコンパイルしたプログラム
は、問題なく出力できるんですよね...????
 全くお役に立っていませんが、srctex だけがトリガーではないということ
で。

[ ]
RE:03647 system関数により呼び出されたプNo.03663
petit さん 03/12/19 01:11
 
>
>>う〜ん,他には思い当たりません.
>>また何か思い当たるところがあれば書き込ませて頂きます.
>
>cygwinを入れてみて、ls.exeを実行してみましたが、できました。
>何か思い当たることがあったらよろしくお願いします。

私のところでは、
system 関数を使って外部プログラムを呼び出し、その外部プログラムが
printf しているようなケースでは秀丸には何も出力されませんでした。
(メニューからのプログラム実行で、 > con の有無には関係なし)
printf しているプログラムを直接指定すると出力されましたが...
これは、こういうものでしょうか?

環境:VC6.0SP5, Windows2000SP3

[ ]
RE:03663 system関数により呼び出されたプNo.03664
petit さん 03/12/19 01:24
 
>system 関数を使って外部プログラムを呼び出し、その外部プログラムが
>printf しているようなケースでは秀丸には何も出力されませんでした。
>(メニューからのプログラム実行で、 > con の有無には関係なし)

補足します。
上記のケースは、
"実行ファイル名" > con
ですが、
cmd /c "実行ファイル名" > con
とすれば、出力されました。

[ ]
RE:03661 system関数により呼び出されたプNo.03665
あべのり さん 03/12/19 02:27
 
> 私の環境は Windows98 なので違いますが、「srctex platex %b > con」も
>含め問題なくできます。標準で付いている「cmd.exe /c dir /b > con」や
>「cmd.exe /c echo %PATH% > con」等は問題なくできるのでしょうか? 特に後
>者は、あべのりさんの意図通りに PATH が出力されますか?
両方ともうまく表示されます.因みにsrctex platex %b > conは新しくコマンドプロ
ンプトが開きます.

> 秀丸からだけ「srctex platex %b」というのは、何かシステムの設定がおか
>しくなっているような気がします。だけど gcc でコンパイルしたプログラム
>は、問題なく出力できるんですよね...????
> 全くお役に立っていませんが、srctex だけがトリガーではないということ
>で。
以前からずっとそうなので,システムの設定云々ではない気もします.再インストー
ル直後ですら同じ状況だったので(当然TeXと秀丸のインストールはした後ですが.).

他の例えばsakura editorなら可能なんですよねぇ…….

[ ]
RE:03665 system関数により呼び出されたプNo.03666
petit さん 03/12/19 03:42
 
>両方ともうまく表示されます.因みにsrctex platex %b > conは新しくコマンドプ
>ロンプトが開きます.

cmd /c srctex platex %b > con
でもだめなんでしょうか...

>他の例えばsakura editorなら可能なんですよねぇ…….

CEditView.cpp、CEditView::ExecCmd() あたりなんですよねぇ…….sakura は。(^^;

[ ]
RE:03664 system関数により呼び出されたプNo.03672
秀丸担当 さん 03/12/19 14:36
 

>system 関数を使って外部プログラムを呼び出し、その外部プログラムが
>printf しているようなケースでは秀丸には何も出力されませんでした。

この状態を確認してみたところ、出力されないのが再現することができました。

cygwinを使ってのsystem("ls");が出力されず、cygwinのls.exeを直接実行した
場合は出力されるのも納得がいきました。

プログラムの中からさらにプログラムを呼んでいる場合も出力されるように修正
させていただきます。
たぶんあべのりさんの問題も解決されるかもしれません。

[ ]
RE:03672 system関数により呼び出されたプNo.03687
あべのり さん 03/12/20 05:39
 
>プログラムの中からさらにプログラムを呼んでいる場合も出力されるように修正
>させていただきます。
>たぶんあべのりさんの問題も解決されるかもしれません。
β6にて解決されていることを確認しました.ありがとうございます.

ところで,個人的なのですがどのような修正を施したのか興味があります.もしよろ
しければどのようにしたのかを簡単にご説明願えないでしょうか?

[ ]
RE:03687 system関数により呼び出されたプNo.03693
秀丸担当 さん 03/12/22 13:10
 

>ところで,個人的なのですがどのような修正を施したのか興味があります.もしよろ
>しければどのようにしたのかを簡単にご説明願えないでしょうか?

CreateProcessのパラメータをDETACHED_PROCESSからCREATE_NEW_CONSOLEに変更
しただけでした。

[ ]
RE:03693 system関数により呼び出されたプNo.03695
あべのり さん 03/12/22 16:05
 
>CreateProcessのパラメータをDETACHED_PROCESSからCREATE_NEW_CONSOLEに変更した
>だけでした。

ありがとうございます.意外とシンプルな解決策なんですね〜

[ ]