+ // build self bin path
+ snprintf(buf, sizeof(buf), "/proc/self/fd/%d", fileno(fi));
+ if (lstat(buf, &st) != 0)
+ FAIL_PERROR("lstat bin_path");
+ bin_path = malloc(st.st_size + 1);
+ CHECK_NE(bin_path, NULL, "bin_path");
+ ret = readlink(buf, bin_path, st.st_size);
+ if (ret < 0)
+ FAIL_PERROR("readlink");
+ bin_path[ret] = 0;
+
+ fclose(fi);
+