popen を使用する利点は、コマンドによって生成された出力を読み取ることだけです。または、システムに対する popen の利点または利点が他にもいくつかあります。
以下の 2 つのプログラムを検討してください。
プログラム 1:
#include <stdio.h>
int main()
{
FILE *more,*who;
if (!(more = popen("more", "w")))
{
printf("Command `more` not found!");
return -1;
}
if (!(who = popen("who", "r")))
{
printf("Command `who` not found!");
return -1;
}
while (!feof(who))
{
char buffer[100];
if (fgets(buffer, 100, who) != NULL)
{
fputs(buffer, more);
}
}
fclose(more);
fclose(who);
return 0;
}
プログラム 2:
#include <unistd.h>
int main()
{
system("who|more");
return 0;
}
Program2で行ったのと同じことを 1 行で実行できるのに、なぜProgram1を使用する必要があるのでしょうか。