【问题标题】:from where pclose gets pidpclose 从哪里获取 pid
【发布时间】:2013-03-27 09:44:22
【问题描述】:

pclose 函数的文档中有一段代码说明了如何实现 pclose() 函数

int pclose(FILE *stream)

{
    int stat;
    pid_t pid;


    pid = <pid for process created for stream by popen()>
    (void) fclose(stream);
    while (waitpid(pid, &stat, 0) == -1) {
        if (errno != EINTR){
            stat = -1;
            break;
        }
    }
    return(stat);
}

所以我很有趣,他得到“popen() 为流创建的进程的 pid”的形式。有没有存储这个值的地方?

【问题讨论】:

  • 我认为这是非常特定于操作系统的。
  • 谢谢@kugg,这是我已经实现的问题的解决方案之一,但是使用标准函数并获取该pid会很好,但正如我从cmets和答案中了解到的那样,它是不可能。
  • 如果它有帮助你可能想看看这个implementation

标签: c++ c


【解决方案1】:

来自实现popen()pclose() 的库拥有的某个内部状态。很可能它将作为字段存储在(内部)FILE 结构中。

【讨论】:

  • 据我了解,没有可移植的方式来获取此字段吗?
  • 对此,请参阅 kugg 的评论(即this link)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多