#include <stdio.h>
int main(void)
{
FILE * file = popen("ls", "r");
int i;
for(i=0; ;++i)
{
char buffer[1024+4];
fgets(buffer, 1024, file);
if(feof(file)) break;
printf("%s", buffer);
}
printf("%d\n", i);
pclose(file);
return 0;
}
int main(void)
{
FILE * file = popen("ls", "r");
int i;
for(i=0; ;++i)
{
char buffer[1024+4];
fgets(buffer, 1024, file);
if(feof(file)) break;
printf("%s", buffer);
}
printf("%d\n", i);
pclose(file);
return 0;
}
其实,最简单的方式是使用stdin和stdout。
system、popen、stdin/stdout是异步,但是表现出同步的性质。
popen、stdin/out使用流技术,将异步的高校和同步的易用结合在了一起。
#include <stdio.h>
int main(void)
{
char buffer[1024];
scanf("%s", buffer);
printf("Hello, %s!", buffer);
}
gcc main.c -o hello
echo Jim | ./hello | wc -l
结果是:1