`
hanyh
  • 浏览: 235358 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PHP参考手册中的openlog函数说明误导

    博客分类:
  • php
阅读更多
PHP参考手册中的openlog函数说明如下:

openlog — Open connection to system logger

Description
bool openlog ( string $ident, int $option, int $facility )
openlog() opens a connection to the system logger for a program.
......
Return Values
Returns TRUE on success or FALSE on failure.
手册里面对openlog这样介绍,让人误认为如果"system logger"没有正常工作或者
停止,则openlog会打开失败,但是实际测试情况是openlog永远返回true!

因为,openlog对C的包装是这样的:
PHP_FUNCTION(openlog)
{
        char *ident;
        long option, facility;
        int ident_len;

        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sll",
&ident,
                                                          &ident_len,
&option, &facility) == FAILURE) {
                return;
        }
        if (BG(syslog_device)) {
                efree(BG(syslog_device));
        }
        BG(syslog_device) = estrndup(ident, ident_len);
        openlog(BG(syslog_device), option, facility);
        RETURN_TRUE;
}
该函数永远RETURN_TRUE!不知道php手册中还有那些函数存在这种情况?如果只根
据手册来决定处理策略,没有对程序各分支流程进行测试,则可能想当然的情况与
真实情况有较大出入。

该函数出现这种情况,可能和C的标准函数:

man openlog..
SYNOPSIS
       #include <syslog.h>

       void openlog(const char *ident, int option, int facility);      
       void syslog(int priority, const char *format, ...);
       void closelog(void);
openlog也没有返回值相关


继续看openlog的一个实现版本:
void openlog(char *ident, int option, int facility)
{
  struct job *job = gettib()->job;

  if (ident && strlen(ident) < 64)
  {
    if (job->ident)
    {
      char *oldident = job->ident;
      job->ident = strdup(ident);
      free(oldident);
    }
    else
      job->ident = strdup(ident);
  }

  job->facility = facility;
}
该函数只做设置,不会返回成功与否。
linux的glibc的openlog实现也类似,没有相应的返回值。


故php的openlog永远返回true,是符合逻辑但是手册会令人误解的!
分享到:
评论

相关推荐

    UG open 函数说明

    此外,深入阅读ugopen_doc中的函数说明文件至关重要,每个函数的参数、返回值、使用示例和注意事项都会在这些文档中详细说明。 在实际开发过程中,开发者通常会遇到的问题包括但不限于性能优化、错误调试、数据兼容...

    UGOPEN函数参考手册(NX6.0)

    UGOPEN函数参考手册(NX6.0)是UG软件二次开发的重要参考资料,主要面向那些希望利用UG OPEN API来扩展和定制UG NX 6.0功能的开发者。UG NX是一款广泛应用于机械设计、产品工程和仿真领域的高级CAD/CAM/CAE软件。其二...

    Open Inventor C++参考手册

    Open Inventor C++ 参考手册是针对 Open Inventor 图形库的一个官方文档,该手册主要提供了对 Open Inventor C++ API 的详细说明,包括类的层次结构、每个类的方法定义及其功能解释等。这对于使用 Open Inventor ...

    Open CV 函数手册

    《OpenCV函数手册》是关于开源计算机视觉库的详尽参考文档,对于图像处理与分析领域的程序员来说,它是一份不可或缺的学习与工作资料。OpenCV(Open Source Computer Vision Library),即开源计算机视觉库,是由...

    Linux C 参考手册(中文版)

    10. **系统调用**:Linux C参考手册会详细列出各种系统调用,如open、close、read、write、writev、recvmsg等,这些是与操作系统直接交互的接口。 11. **网络编程**:Linux下的套接字编程是网络应用开发的基础,...

    《VB函数参考手册》电子书

    《VB函数参考手册》是一本全面介绍Visual Basic (VB)编程语言中函数使用的电子书籍,对于初学者和有一定经验的开发者来说,都是宝贵的参考资料。VB是Microsoft开发的一种面向对象的编程语言,它以其简单易学、功能...

    VB函数参考手册

    VB函数参考手册是Visual Basic编程语言的重要组成部分,它包含了丰富的函数和方法,帮助开发者实现各种功能。Visual Basic,简称VB,是由微软公司推出的面向对象的编程环境,它以易学易用著称,广泛应用于软件开发、...

    linuxc函数参考手册

    《Linux C函数参考手册》是一本详尽阐述C语言在Linux环境下的函数使用的重要资源,对于程序员和系统管理员来说,是必备的参考资料。手册涵盖了C语言标准库中的各种函数,包括其用途、函数类型、参数解释及其功能,...

    VB语言参考及函数速查手册 CHM

    VB语言参考及函数速查手册CHM是一个非常实用的资源,旨在为VB编程者提供详尽的语法解释、函数用法以及编程技巧。 该手册的核心内容可能包括以下几个方面: 1. **VB基本语法**:涵盖变量声明、数据类型(如Integer,...

    Linux C函数库参考手册

    Linux C函数库,通常指的是GNU C Library,也称为glibc,是Linux操作系统中核心的C编程接口。...Linux C函数库参考手册是开发者不可或缺的工具,它能帮助解决编程过程中遇到的各种问题,并确保代码的正确性和兼容性。

    OpenLog 是一款开源数据记录器,可通过简单的串行连接工作,并支持高达 64GB 的 microSD_C++_代码_下载

    OpenLog 是一款开源数据记录器,可通过简单的串行连接工作,并支持高达 64GB 的 microSD 卡。 存储库内容 /文档- 数据表、附加产品信息 /Firmware - OpenLog 的示例草图,以及连接到 OpenLog 的 Arduino。 /...

    OpenLog硬件的黑盒固件_设计_文档_相关文件_下载_HTML

    OpenLog 的黑盒固件 这个OpenLog 3 Light的修改版本修改了通常用于配置 OpenLog 的“CONFIG.TXT”系统,以简化可用设置并确保它与 Blackbox 兼容。CONFIG.TXT 中唯一可用的设置是波特率,默认为 115200。 您将在...

    linux C函数参考手册 chm版本

    Linux C函数参考手册是每一位从事Linux系统开发的程序员不可或缺的工具书。这本手册以CHM(Microsoft Compiled HTML Help)格式提供,便于快速查找和学习C语言在Linux环境下的使用。CHM格式集成了HTML文档的优点,...

    Linux_C函数参考手册_linux_

    Linux_C函数参考手册是一份详细列举了Linux环境下常用C函数的资源,对于开发者来说是不可或缺的工具。这份手册包含了丰富的信息,旨在帮助程序员理解和使用Linux系统中的C库函数,提高开发效率。 手册可能涵盖了...

    CAPL语言参考手册

    CAPL语言参考手册中通常包含以下内容: 1. 语言基础:包括CAPL的基本语法、数据类型、控制结构、函数和模块化编程等相关知识点。这些是编写CAPL脚本时必须了解的基础知识。 2. 内置函数:手册会介绍大量的内置函数...

    VB函数参考手册,VB函数参考手册,下载不后悔

    VB函数参考手册是一份极其重要的资源,对于学习和掌握Visual Basic (VB)编程语言的开发者来说,它无疑是不可或缺的工具。这份手册详细介绍了VB中的各种函数及其用法,旨在帮助初学者快速上手,同时也为有经验的...

    Perl语言参考手册中文htmlPerl语言参考手册中文html

    文件列表中的“aspsun.com-readme.txt”可能是手册的阅读指南或版权信息,而“Perl语言参考手册(中文html)”则是手册的主体部分,包含完整的Perl语言知识体系。通过深入学习和实践,你可以掌握Perl语言,从而解决...

    C语言标准函数库速查手册.chm

    本速查手册《C语言标准函数库速查手册.chm》是一个实用的参考资料,它详细列举了C标准库中的各种函数,帮助开发者快速查找和理解这些函数的用法。手册可能包括以下内容: 1. **输入/输出(I/O)**:头文件中的函数...

Global site tag (gtag.js) - Google Analytics