(root)/
strace-6.5/
tests-mx32/
print_ppid_tracerpid.c
       1  /*
       2   * Helper program for strace-D.test
       3   *
       4   * Copyright (c) 2019-2020 Dmitry V. Levin <ldv@strace.io>
       5   * All rights reserved.
       6   *
       7   * SPDX-License-Identifier: GPL-2.0-or-later
       8   */
       9  
      10  #include "tests.h"
      11  #include <stdio.h>
      12  #include <stdlib.h>
      13  #include <string.h>
      14  #include <unistd.h>
      15  
      16  int
      17  main(void)
      18  {
      19  	static const char status[] = "/proc/self/status";
      20  	FILE *fp = fopen(status, "r");
      21  	if (!fp)
      22  		perror_msg_and_fail("fopen: %s", status);
      23  
      24  	static const char prefix1[] = "PPid:";
      25  	static const char prefix2[] = "TracerPid:";
      26  	char *line = NULL;
      27  	size_t n = 0;
      28  
      29  	while (getline(&line, &n, fp) > 0) {
      30  		if (strncmp(line, prefix1, sizeof(prefix1) - 1) == 0 ||
      31  		    strncmp(line, prefix2, sizeof(prefix2) - 1) == 0)
      32  			fputs(line, stdout);
      33  	}
      34  
      35  	if (!line)
      36  		perror_msg_and_fail("getline");
      37  
      38  	free(line);
      39  	fclose(fp);
      40  
      41  	return 0;
      42  }