test-popen.c

来自「一个C源代码分析器」· C语言 代码 · 共 68 行

C
68
字号
#include <ansidecl.h>#include <stdio.h>#include <stdlib.h>voidDEFUN(write_data, (stream), FILE *stream){  int i;  for (i=0; i<100; i++)    fprintf (stream, "%d\n", i);  if (ferror (stream))  {    fprintf (stderr, "Output to stream failed.\n");    exit (1);    }}voidDEFUN(read_data, (stream), FILE *stream){  int i, j;  for (i=0; i<100; i++)    {      if (fscanf (stream, "%d\n", &j) != 1 || j != i)	{	  if (ferror (stream))	    perror ("fscanf");	  puts ("Test FAILED!");	  exit (1);	}    }}intDEFUN_VOID(main){  FILE *output, *input;  int wstatus, rstatus;  output = popen ("/bin/cat >tstpopen.tmp", "w");  if (output == NULL)    {      perror ("popen");      puts ("Test FAILED!");      exit (1);    }  write_data (output);  wstatus = pclose (output);  printf ("writing pclose returned %d\n", wstatus);  input = popen ("/bin/cat tstpopen.tmp", "r");  if (input == NULL)    {      perror ("tstpopen.tmp");      puts ("Test FAILED!");      exit (1);    }  read_data (input);  rstatus = pclose (input);  printf ("reading pclose returned %d\n", rstatus);  puts (wstatus | rstatus  ? "Test FAILED!" : "Test succeeded.");  exit (wstatus | rstatus);}    

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?