C言語
# include <stdio.h>
int main (){
FILE *fp=NULL;
char *cmdline="cd C:\\2014 & dir";
fp=_popen(cmdline,"w");
if(NULL == fp)
{
//_pclose(fp);←ここにpcloseを書くとダメ、書くとバグ扱いになる
printf("file open error ! \n");
return 1;
}
_pclose(fp);
return 0;
}
環境
OS:windows7 32bit (自作機)
コンパイラ:Borland C++ 5.5.1 for Win32
解説
_popenでdirコマンドを実行する。
_popenと_pcloseなのは、popenとpcloseではエラーが出るからである。
Error: 外部シンボル '_popen' が未解決(C:\2014\0601\003.OBJ が参照)
Error: 外部シンボル '_pclose' が未解決(C:\2014\0601\003.OBJ が参照)
コンパイルと実行結果
上記ソースをC:\2014\0601\003.cとしてコンパイルして実行する。
C:\2014\0601>bcc32 003.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
003.c:
警告 W8004 003.c 13: 'fp' に代入した値は使われていない(関数 main )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
C:\2014\0601>003.exe
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は XXXXXXXXXXXXXXXX です
C:\2014 のディレクトリ
2014/06/01 12:39 <DIR> .
2014/06/01 12:39 <DIR> ..
2014/05/15 22:29 <DIR> 0425
2014/05/14 07:09 <DIR> 0514
2014/05/16 07:22 <DIR> 0515
2014/06/01 16:00 <DIR> 0601
2014/05/14 07:09 <DIR> java
0 個のファイル 0 バイト
7 個のディレクトリ 20,048,269,312 バイトの空き領域
C:\2014\0601>
参考文献
C言語 popen()でコマンドの入力に書き込む
http://kaworu.jpn.org/kaworu/2008-05-04-1.php