首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C strchr在HPUX上与空值一起工作,但在RHEL上与段错误一起工作

c strchr是C语言中的一个函数,用于在一个字符串中查找指定字符的第一次出现的位置。它的函数原型如下:

代码语言:txt
复制
char *strchr(const char *str, int c);

其中,str是要查找的字符串,c是要查找的字符。该函数返回一个指向字符c第一次出现的位置的指针,如果找不到该字符,则返回空指针。

在HPUX操作系统上,当c为NULL时,strchr函数会正常工作,返回字符串中第一个NULL字符的位置。但在RHEL操作系统上,当c为NULL时,strchr函数会导致段错误(segmentation fault)。

段错误是一种内存访问错误,通常是由于程序试图访问未分配给它的内存区域或者试图往只读内存区域写入数据导致的。在RHEL上,strchr函数在遇到c为NULL时,会尝试访问一个非法的内存地址,从而导致段错误的发生。

为了解决这个问题,可以在使用strchr函数之前,先判断c是否为NULL,如果是NULL,则进行特殊处理,避免调用strchr函数。例如:

代码语言:txt
复制
if (c != NULL) {
    char *result = strchr(str, c);
    // 处理result
} else {
    // c为NULL的特殊处理
}

总结:

  • strchr函数用于在字符串中查找指定字符的第一次出现的位置。
  • 在HPUX操作系统上,strchr函数可以与NULL一起工作,返回字符串中第一个NULL字符的位置。
  • 在RHEL操作系统上,strchr函数与NULL一起工作会导致段错误的发生。
  • 为了避免在RHEL上发生段错误,可以在使用strchr函数之前先判断c是否为NULL,进行特殊处理。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Apache CVE-2017-7659漏洞重现及利用分析

这里的判断逻辑,如果满足下面2个条件之一 1) r->hostname为,且请求的HTTP版本大于等于1.1 2) 没有Host头,且请求的HTTP版本等于1.1 就会立刻回复400状态码的错误页面,...漏洞利用 在上一节,我们已经验证了单一进程模式下,如何通过该漏洞导致apache服务器异常终止。但是通常情况下apache服务器启动时,会同时启动多个工作进程: ?...2.4.25之前的版本代码2.4.25版本不尽相同,以2.4.17为例,h2_request_rwrite函数中: ?...收到攻击POC后,r->hostname为,因此req->authority也为,而ap_strchr_c其实通过下面的宏进行定义的: ?...因此在上面的函数中,调用strchr的第一个参数为,此时会导致进程崩溃。

2.4K60

HPUX安装Nagios监控插件(NRPE)难点解析

HPUX安装NRPE,特别是监控Oracle数据库有一些疑难的点,自己一边摸索一边整理了出来,就当是做个备忘 一、下载预编译好的depot源码包 包名:NRPE-2.12.depot.gz 免费下载地址...http://linux.linuxidc.com/ 用户名密码都是www.linuxidc.com 具体下载目录在 /2014年资料/3月/30日/HPUX安装Nagios监控插件(NRPE)难点解析...5666端口; 2、hpux服务器测试check_oracle --cache orcl username password总是提示用户名密码错误,无论用什么帐户都报这个错误?...可能原因: a、一定要注意hpux输入oracle相关用户名密码进分别用单引号引起来,如'username' 'password' 3、hpux服务器测试check_oracle --login ...,这个文件/opt/nrpe/libexec目录下有,但系统会自动到/目录下查找,只要做个软连接就可以了  ln -s /opt/nrpe/libexec/utils.sh  /utils.sh c

62900
  • 计算机系统调用的成本到底有多高?

    表中显示,RHEL 7查询CLOCK_MONOTIC_RAW和CLOCK_TAI会调用一个真正的系统调用,而在Fedora 33内核(5.12/5.13),这些时钟读数也被实现为vDSO。...另外,基准进程是标准调度策略下运行的,Linuxsched_yield()被描述为:sched_yield()旨在实时调度策略(即SCHED_FIFO或SCHED_RR)一起使用。...因此,未指定可能意味着进程的调度策略SCHED_OTHER比较靠后,系统调用就会跳出。...顺便说一下,50微秒也是Linux正常调度进程的默认定时器松弛。定时器松弛机制将定时器的到期时间延长到松弛,以便对多个定时器进行分组,因为这样可以减少唤醒,从而节省能量。...基本,模式转换表示在用户模式和内核模式之间(或者在用户空间和内核空间之间)的切换,而上下文切换表示不同任务之间的切换,这是由内核推动的。上下文转换比模式转换需要更多的工作,因此也更昂贵。

    60330

    通过vmstat学习CPU和进程性能监控

    c、 外围设备的中断:当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令转而去执行中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换...1.2 上下文切换 进程上下文:就是一个进程执行的时候,CPU的所有寄存器中的、进程的状态、堆栈的内容、进程打开的文件以及内存信息等,是进程运行的环境。 ?...进程优点是业务隔离,一个进程出现错误不会影响整个系统。如Oracle数据库服务器传统就是进程模型。进程缺点是进程的分配和释放有非常高的成本。...CPU利用率 使用vmstat时一般认为CPU栏sy是系统进程CPU占用率,us是用户进程CPU占用率;但学习了进程工作模式和上下文切换后,发现这种认识是错误的,真实表述如下: ?...此参数只HPUX系统的vmstat工具中存在。 ? ---- 4.

    1.1K21

    代码优化之Analyze检测

    现在它可以单独的工具 或者 Xcode中使用,如果是单独使用,通过过命令行,代码构建一起。 Analyzer是100%开源的,是Clang项目的一部分。...Clang的其余部分一样,Analyzer实现为一个C ++库,可以被其他工具或者应用使用。...2、比编译慢 操作,使用静态分析自动查找深度程序错误是关于交换CPU时间以加强代码。由于使用最先进的静态分析工具进行深入分析,静态分析可能比编译慢得多。...Clang Static Analyzer合理的时间内运行,既可以限制它将要执行的检查工作量,也可以使用聪明的算法来减少查找错误所必须做的工作量。 3、误报 静态分析并不完美。...from a method that is expected to return a non-null value 这种是返回的返回了一个,一般在数据源返回的时候如果返回空会报这个蓝 5、Memory

    1.1K20

    小白Linux入门--入门篇(二):Linux中特殊符号.~>

    这行的作用是,检查这些环境变数是否已设置,没有设置的将会以标准错误显示错误讯息。像这种检查如果使用类似 test 或 if这类的做法,基本也可以处理,但都比不上上例的简洁效率。...问号 1、文件名扩展(Filename expansion)扮演的角色是匹配一个任意的字元,但不包含 null 字元。 [root@RHEL6 ~]# ls m?...这个变量是上一个执行的命令所回传的。当我们执行某些命令时,这些命令都会回传一个执行后的代码,一般说,如果成功执行该命令,则会回传一个0,如果执行过程发生错误,就会回传错误代码。...[[ ]] 这组符号先前的 [] 符号,基本作用相同,但她允许在其中直接使用 || && 逻辑等符号。 #!...不过, cd 指令中则比较特别 cd - 这代表变更工作目录到"一次"工作目录。 % 除法 (Modulo) 在运算式中,用来表示 "除法"。

    25.9K77

    头文件string的作用_cstring头文件的作用

    1.stringcstring有什么区别 是C++标准库头文件,包含了拟容器class std::string的声明(不过class string事实只是basic_string<...关于C 头文件,选用相同的方法,但在每个名字前还要添加一个c.所以C 的变成了,变成了,等等。...实习 ,编译器制造商不会间断对客户现有软件供应支撑,所以可以估量,旧的C++ 头文件将来几年内仍是会被支撑。...差不多,可以直接char*进行加法,但不可以相互使用+运算符,即string str = str + cstr是非法的,须转换成char*;   2 char*没有+运算,只能使用strcat把两个指针连在一起...*等;   2 char*没有+=运算符,只能使用strcat把两个指针连在一起;   d) operator[]   2 CString最好,当越界时会抛出断言异常;   2 stringchar*

    4.8K10

    当Java虚拟机遇上Linux Arena内存池

    作者简介 刘韬,云和恩墨中间件服务交付团队专家 Java开发出身,10年WebLogic相关开发、运维工作经验,熟悉SOA、现代业务系统架构中各层组件,尤其擅长故障处理、性能优化等工作。...然后,就是需要知道这是什么东东,Google一把,得知anon是Anonymous memory的缩写。...2 : 8) 计算,当前系统80核CPU,那么理论该Java虚拟机进程最大的Arena就是 80 * 2 * 1(MB)= 160MB,但实际,通过pmap观察到这个进程这种1MB大小的匿名内存块都有...解决办法: 这次直接设置MALLOC_ARENA_MAX=1,只保留main arena,禁用掉per thread arena内存池,使其RHEL 5.x版本保持一致,问题得以解决,设置完,Java...6.x中默认自带的)arena内存分配和管理上,由于不少的Bug或目前我还没完全弄明白的理论的存在,实际用pmap看到的1MB或64MB的anonymous memory(缩写为anon)并不完全遵循

    7.6K81

    实施运维企业面试题-5「建议收藏」

    最后,由于源代码的开放及世界许多程序员的卓有成效的工作, Tomcat 已经可以和 大部分的主流服务器一起工作,而且是以相当高的效率一起工作。... VS-TUN 相比,VS-DR 这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。 缺点:(不能说缺点,只能说是不足)要求负载均衡器的网卡必须物理网卡在一个物理。...答案:C 9 3 .关系数据库中,主键是 ( ) A.创建唯一的索引,允许 B.只允许以表中第一字建立 C.允许有多个主键的 D.为标识表中唯一的实体 答案:D 9 4 .使用 S E L E...p t a b l e 表名;删除表 答案:B , C , D , A 3.下面正确的说法是 ( ) A.关键字只能由单个的属性组成 B.一个关系中,关键字的不能为 C.一个关系中的所有候选关键字均可以被指定为主关键字...的为 8000 8、使用 rpm 包安装的情况下,apache 服务器的访问日志和错误日志将分别记录在( )文件中。

    3.3K40

    博文|使用Zabbix官方安装包时几个易混淆的点

    可想而知,由于随系统分发的是PHP 5.4版本,这让RHEL7使用Zabbix安装包时会导致一些问题,这是由于发行了PHP 5.4版本。...原本打算完全放弃对RHEL7Zabbix5.0前端的支持,但在支持团队协商后,决定设法继续提供这些安装包。...旧数据库和OpenSSL 数据库的安全连接是Zabbix5.0的新功能,但是它在RHEL7不能实现。 实操一下。...但请记住,许多新功能在这些包中并不支持,包括: 不支持TLS 1.3 不支持加密数据库连接 最重要的是,到Zabbix 5.4,将移除RHEL7上部署proxy的支持。...为RHEL7 提供Zabbix5.0安装包,并在一时间内支持。尽管存在上述已知问题,但这仍是个很好的选择。 从源码编译。当然,这是一条艰难的路。获取源码,开始编译。

    1.1K10

    C语言string.h所有函数汇总

    ptr 数组检查的和每个字节都被解释为无符号字符进行比较。参数Parametersptr指向执行搜索的内存块的指针。value要定位的。...可移植性Portability C 中,此函数仅声明为:char * strchr ( const char *, int );而不是 C++ 中提供的两个重载版本。...返回Return Value指向属于 str2 的任何字符 str1 中首次出现的指针,如果在终止空字符之前 str1 中找不到 str2 的任何字符,则为指针。...它作为其 int 提升传递,但在内部转换回 char。返回Return Value指向 str 中最后一个出现的字符的指针。如果未找到该字符,则该函数将返回一个指针。...Error number.返回Return Value指向描述错误 errnum 的错误字符串的指针。

    73400

    《Linux就该这么学》笔记(七)

    Vim文本编辑器 命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。 输入模式:正常的文本录入。 末行模式:保存或退出文档,以及设置编辑环境。...cd /etc/yum.repos.d vim rhel7.repo [rhel7] name=rhel7 baseurl=file:///media/cdrom enabled=1 gpgcheck...对应的是显示一次命令的执行返回 $1、$2、$3……则分别对应着第N个位置的参数值 判断用户的参数 Shell脚本中的条件测试语法可以判断表达式是否成立,若条件成立则返回数字0,否则便返回其他随机数值...,Linux系统中的运算符号是一个叹号(!)...注意事项 crond服务的配置参数中,可以像Shell脚本那样以#号开头写上注释信息,这样日后回顾这段命令代码时可以快速了解其功能、需求以及编写人员等重要信息。

    66210

    Vim编辑器Shell命令脚本

    熟练使用“、或、非”三种逻辑操作符的基础,大家还要充分学习if、for、while、case条件测试语句,并通过10多个实战脚本的实操练习,达到在工作中灵活运用的水准。...本章最后通过实战的方式演示了使用at命令crond计划任务服务来分别实现一次性的系统任务设置和长期性的系统任务设置,分钟、小时、日期、月份、年份的基础实现工作的自动化,从而让日常的工作更加高效,可以让大家早点下班陪孩子...变量显示一条命令执行后的返回。...,它表示把条件测试中的判断结果取相反。也就是说,如果原本测试的结果是正确的,则将其变成错误的;原本测试错误的结果,则将其变成正确的。...脚本中使用read命令读取用户输入的密码,然后赋值给PASSWD变量,并通过-p参数向用户显示一提示信息,告诉用户正在输入的内容即将作为账户密码。

    1.3K10

    如何从 RHEL 8 升级到 RHEL 9 版本?

    RHEL 9 的稳定版本已经发布,它带来了一些重大变化,提高了安全性和可用性,并具有任何RHEL版本相同的稳定性。...本指南将向您展示如何以最少的工作量和复杂性轻松从RHEL 8升级到RHEL 9,因此,让我们首先从新版本必须提供的内容开始。...从 RHEL 8 升级到 RHEL 9 给定的过程不会花费太多时间,并且保持简单,以便每个RHEL 8用户都可以从中受益,但在进行升级过程之前,让我们先看看RHEL 9的要求。...要求 一个工作RHEL 8.6系统。 具有足够带宽以执行完整升级的工作互联网。 引导分区的可用空间(最小 100Mb) 让我们开始升级过程。...使用 Red Hat Update Infrastructure ( RHUI ) 从RHEL 8升级到RHEL 9,那么启用 RHUI 以进行无缝升级至关重要。

    2.1K00

    运维面试题(1024水篇)

     最后,由于源代码的开放及世界许多程序员的卓有成效的工作, Tomcat 已经可以和 大部分的主流服务器一起工作,而且是以相当高的效率一起工作。...VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。 缺点:(不能说缺点,只能说是不足)要求负载均衡器的网卡必须物理网卡在一个物理。...”,&的含义是“等同”,2>&1的意思就是“将错误的信息重定向输出的地方跟1一样,都是去设备文件”。...答案:C 9 3 .关系数据库中,主键是 ( ) A.创建唯一的索引,允许 B.只允许以表中第一字建立 C.允许有多个主键的 D.为标识表中唯一的实体 答案:D 9 4 .使用 S...B.一个关系中,关键字的不能为 C.一个关系中的所有候选关键字均可以被指定为主关键字 D.关键字是关系中能够用来惟一标识元组的属性 答案:D , B , C 4.以下说法正确的是 (

    2.4K31

    一起来探查PHP8测试版都有些啥东东

    一起来探查PHP8测试版都有些啥东东 其实 PHP8 的这个第一版测试版 (php-8.0.0alpha1) 2020年6月底就已经上线了,不过也是近两天去官网的时候才看到。...下面例子之前的版本中是会调用 T1::func() ,但在 PHP8 中会产生致命错误,需要显式地写明引用哪一个 trait 的 func() class X { use T1, T2 {...(needle) 的函数参数可以为,strpos(), strrpos(), stripos(), strripos(), strstr(), strchr(), strrchr(), stristr...结果与 “get_class(object)” 相同 new 和 instanceof 可以任意表达式一起使用,使用 "new(expression)(… 修复了一些变量语法,如:Foo::BAR::...所以说,期待正式版吧,看看丢到服务器的 PHP8 能为我们带来多少的性能提升。

    4.7K40

    ntp服务的细节全解析

    如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件,/etc/sysconfig/ntpd文件中,添加 SYNC_HWCLOCK=yes 这样,就可以让硬件时间系统时间一起同步...这两种方式都会在本地时钟远端的NTP服务器时钟相差大于1000s时,ntpd会停止工作启动NTP时加了参数“-g”就可以忽略1000S的问题。...使用以下命令检查ntp的版本: # ntpq -c version  错误问题处理 用于收集安装,配置和应用中出现的问题 错误1:ntpdate -u ip -> no server suitable...ntp server重新启动ntp服务后,ntp server自身或者与其server的同步的需要一个时间,这个过程可能是5分钟,在这个时间之内在客户端运行ntpdate命令时会产生no server...如下所示所示: 使用之前得弄清楚一个问题,ntpdntpdate更新时间时有什么区别。

    3.5K20
    领券