【问题标题】:getpid on linux while using -std=c++11 as compiler flag使用 -std=c++11 作为编译器标志时在 Linux 上获取 getpid
【发布时间】:2016-03-31 11:35:46
【问题描述】:

当我使用 -std=c++11 标志时,我想使用标头 sys/types.h、unistd.h(C 风格)中的 getpid 函数,但之后我有:

“函数 getpid 无法解析”。

是否有某种解决方法或等效功能?

@编辑:

我又检查了一遍,不是标志错误

头.h

#ifndef HEAD_H_
#define HEAD_H_

#include <sys/types.h>
#include <unistd.h>

void test();

#endif /* HEAD_H_ */

head.cpp

#include "head.h"

void test()
{
    pid_t pid = getpid(); // Function 'getpid' could not be resolved
}

这很奇怪,因为我也在“干净”项目上进行了测试,完全没有问题。

main.cpp

#include <sys/types.h>
#include <unistd.h>

int main()
{
      pid_t pid = getpid();

      return 0;
}

看来我无法从 unistd 获得任何功能,因为

    char* a_cwd = getcwd(NULL,0);

也没有解决

【问题讨论】:

  • 贴出相关代码。发布 complete 错误消息(编译器给你的那个)。
  • getpid 在 C++11 中完全有效。所以我们需要更多信息。
  • 添加了更多细节
  • 你用什么命令编译这个?

标签: c++ unix unistd.h


【解决方案1】:
#include <unistd.h>
#include <iostream>

int main()
{
  std::cout << getpid() << std::endl;
  return 0;
}

dgs@dhome:~/Develop/Test2$ g++ -std=c++11 getpid.cpp
dgs@dhome:~/Develop/Test2$ ./a.out
11980

dgs@dhome:~/Develop/Test2$ g++ --version
g++ (Debian 4.9.2-10) 4.9.2

【讨论】:

    猜你喜欢
    • 2016-11-18
    • 2013-12-08
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    相关资源
    最近更新 更多