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 Weberint 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