我有一个正常编译良好的应用程序。它使用了两个“非标准”函数(如果我没记错的话,这两个函数都在cstdlib中):sleep()和daemon()。在更新我的系统时,我发现我的程序不能再编译了(它仍然可以在我的旧系统上编译)。GCC给了我这样的信息:
error: 'daemon' was not declared in this scope
error: 'sleep' was not declared in this scope我记得在过去有一次,我也遇到过类似的问题,其中包括cstdlib就解决了这个问题。我找不到cstdlib的更改日志,也不知道函数被移到了哪里(如果没有删除)。我还假设daemon()也发生了同样的事情。我在谷歌上找不到任何与此相关的东西。
有没有人知道这些东西到哪里去了,或者更好的是知道我将来可以在哪里找到这些东西,以防我再次遇到这个问题?
我知道daemon()是一种懒惰的方式,我可以自己编写一种适当的方法来守护这个程序(使用fork等),但是使用它是非常方便的。
发布于 2012-08-12 06:51:49
Linux手册页通常包含大多数函数try所需的头文件
man daemon或
man 3 sleep这两个可能都表明您需要#include <unistd.h>
发布于 2012-08-12 06:49:02
sleep和daemon都不是C标准库的一部分。sleep是在unistd.h中定义的POSIX.1-2001函数,而daemon是一个非POSIX函数,它也可以在linux上的unistd.h中使用。
作为一个非标准函数,您可能必须在#include <unistd.h>之前定义_GNU_SOURCE,才能获得daemon的定义。
https://stackoverflow.com/questions/11918260
复制相似问题