スポンサーリンク

C言語で外部コマンドを実行する方法は、いくつかあります。
  • system関数を利用する
  • popen関数を利用する
  • exec系関数を利用する
実行する外部コマンドの出力をプログラムで取得したい場合は、
pipe()とdup()を使って、fork()する方法もありますが、
popen()を使うとより簡単に書けます。

popenに実行したいコマンドを渡し、popen()が返したファイルポインタを
読み込むだけで、popenに実行させたコマンドの出力を読み出すことが
できます。

サンプルソースpopen.c

popen関数を利用したサンプルソース。

この例では、lsコマンドで/binのリストを取得します。
#include <stdio.h>
#include <stdlib.h>
#include <err.h>
#define BUF 256
int
main (int argc, char *argv[])
{
	FILE	*fp;
	char	buf[BUF];
	char	*cmdline = "/bin/ls /bin";
	if ( (fp=popen(cmdline,"r")) ==NULL) {
		err(EXIT_FAILURE, "%s", cmdline);
	}
	while(fgets(buf, BUF, fp) != NULL) {
		(void) fputs(buf, stdout);
	}
	(void) pclose(fp);

	exit (EXIT_SUCCESS);
}

popen()でオープンしたら、pclose()でクローズします。

コンパイル方法

cc popen.c


実行方法

./a.out


スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

はてなの人気のブックマーク

スポンサーリンク
 

過去ログ

2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー