C言語 - 標準入力をパイプする popen - 標準入力をパイプする
- 1. ソース
- 2. Makefile
- 3. 実行
1. ソース
> ls -la
合計 36K
drwxr-xr-x 2 kitayama kitayama 512 5月 18 11:14 .
drwxr-xr-x 4 kitayama kitayama 512 5月 18 09:42 ..
-rw-r--r-- 1 kitayama kitayama 129 5月 18 09:54 Makefile
-rwxr-xr-x 1 kitayama kitayama 11246 5月 18 11:14 popen
-rw-r--r-- 1 kitayama kitayama 499 5月 18 11:14 popen.c
-rw-r--r-- 1 kitayama kitayama 6648 5月 18 11:14 popen.o
という状況で
./popen.c
を作成して以下のように記述。
#include <stdio.h>
#define MAX_LINE 100
#define MAX_BUFF 2048
int main(int argc, char* argv[])
{
char a[100][2048] = {};
int i;
FILE *file = NULL;
file = popen("ls -la", "r");
if (file == NULL)
{
perror("");
return 0;
}
for (i=0; i<MAX_LINE; i++)
{
if (fgets(a[i], sizeof(a[0]), file) == EOF)
{
break;
}
}
pclose(file);
for (i=0; i<MAX_LINE; i++)
{
if (a[i][0] == '\0')
{
break;
}
printf("%s", a[i]);
}
return 0;
}
2. Makefile
./Makefile
を作成して以下のように記述。
.PHONY = target
CC = clang
target : popen.o Makefile
$(CC) -O0 -g -o popen popen.o
.c.o : Makefile
$(CC) -O0 -g -c $< -o $@
3. 実行
make して実行します。
> make
clang -O0 -g -o popen popen.o
> ./popen
total 36
drwxr-xr-x 2 kitayama kitayama 512 5月 18 11:26 .
drwxr-xr-x 4 kitayama kitayama 512 5月 18 09:42 ..
-rw-r--r-- 1 kitayama kitayama 129 5月 18 09:54 Makefile
-rwxr-xr-x 1 kitayama kitayama 11246 5月 18 11:26 popen
-rw-r--r-- 1 kitayama kitayama 499 5月 18 11:14 popen.c
-rw-r--r-- 1 kitayama kitayama 6648 5月 18 11:14 popen.o
|
|