1*74989affSNico Weber // RUN: %clangxx -g %s -o %t && %run %t | FileCheck %s
2*74989affSNico Weber // CHECK: 1
3*74989affSNico Weber // CHECK-NEXT: 2
4*74989affSNico Weber 
5*74989affSNico Weber #include <assert.h>
6*74989affSNico Weber #include <stdio.h>
7*74989affSNico Weber 
main(void)8*74989affSNico Weber int main(void) {
9*74989affSNico Weber   // use a tool that produces different output than input to verify
10*74989affSNico Weber   // that everything worked correctly
11*74989affSNico Weber   FILE *fp = popen("sort", "w");
12*74989affSNico Weber   assert(fp);
13*74989affSNico Weber 
14*74989affSNico Weber   // verify that fileno() returns a meaningful descriptor (needed
15*74989affSNico Weber   // for the implementation of TSan)
16*74989affSNico Weber   assert(fileno(fp) != -1);
17*74989affSNico Weber 
18*74989affSNico Weber   assert(fputs("2\n", fp) >= 0);
19*74989affSNico Weber   assert(fputs("1\n", fp) >= 0);
20*74989affSNico Weber   assert(pclose(fp) == 0);
21*74989affSNico Weber 
22*74989affSNico Weber   return 0;
23*74989affSNico Weber }
24