Lines Matching refs:fds
273 FILE* CustomPopen(const std::vector<std::string>& command, const char* type, int fds[],
299 CHECK_TRUE(pipe(fds) == 0, nullptr, "Pipe open failed!");
314 CHECK_TRUE(CustomFdClose(fds[READ]) == 0, nullptr, "CustomFdClose failed!");
315 dup2(fds[WRITE], STDOUT_FILENO); // Redirect stdout to pipe
316 CHECK_TRUE(CustomFdClose(fds[WRITE]) == 0, nullptr, "CustomFdClose failed!");
318 CHECK_TRUE(CustomFdClose(fds[WRITE]) == 0, nullptr, "CustomFdClose failed!");
319 dup2(fds[READ], STDIN_FILENO); // Redirect stdin to pipe
320 CHECK_TRUE(CustomFdClose(fds[READ]) == 0, nullptr, "CustomFdClose failed!");
334 CHECK_TRUE(CustomFdClose(fds[WRITE]) == 0, nullptr, "%s %d CustomFdClose failed! errno(%s)\n",
338 CHECK_TRUE(CustomFdClose(fds[READ]) == 0, nullptr, "%s %d CustomFdClose failed! errno(%s)\n",
346 PROFILER_LOG_DEBUG(LOG_CORE, "END %s fds[READ]: success!", __func__);
347 return fdopen(fds[READ], "r");
350 PROFILER_LOG_DEBUG(LOG_CORE, "END %s fds[WRITE]: success!", __func__);
351 return fdopen(fds[WRITE], "w");
368 int CustomPclose(FILE* fp, int fds[], volatile pid_t& childPid, bool needUnblock)
389 if (fileno(fp) == fds[READ]) {
390 fds[READ] = -1;
391 if (CustomFdClose(fds[WRITE]) != 0) {
396 } else if (fileno(fp) == fds[WRITE]) {
397 fds[WRITE] = -1;
398 if (CustomFdClose(fds[READ]) != 0) {
404 PROFILER_LOG_INFO(LOG_CORE, "%s: Can't find fp in fds[READ/WRITE].", __func__);
414 // IF pipe fds is block, before release other threads, you need call CustomPUnblock
415 int CustomPUnblock(int fds[])
419 CHECK_TRUE(fds[READ] != -1 && fds[WRITE] != -1, -1, "END fds[READ/WRITE]=-1");
421 int stat = fcntl(fds[READ], F_GETFL);
427 write(fds[WRITE], eof, strlen(eof) + 1);
428 fcntl(fds[READ], F_SETFL, O_NONBLOCK);