linux c驴杂记

  

C语言标准库中包含了各种用于处理错误的函数和宏。1、assert( ) 宏   #include<assert.h>void assert( int expression );可用于诊断程序bug。expression可以是任何要检测的东西:变量或任何表达式。如果expression为TRUE,则assert()不执行任何操作;否则在stderr上显示一条错误消息,并终止程序的执行。例:assert(  x >= 0);为使assert( )宏发挥作用,编程程序必须采用调试模式。以后以发行模式编译程序的最后版本时,assert()将被禁用。assert( )采取的动作取决于另一个名为NDEBUG宏(表示“不调试”)。如果NDEBUG宏未被定义(默认情况),则assert( )将处于活动状态;否则assert( )将被关闭,因此不起作用。定义NDEBUG宏的代码如下: #define NDEBUG2、头文件errno.h头文件errno.h定义了几个宏,用于定义和记录运行错误。这些宏将结合函数perror( )一起使用。头文件errno.h定义了一个名为errno的外部int变量。如果执行时发生错误,C语言函数库中的很多函数都将一个值赋给该变量。头文件errno.h定义的符号错误常量名称	值	消息和含义E2BIG	1000	参数列表过长(超过128字节)EACCES	5	没有权限(如,试图写一个为只读的文件)EBADF	6	文件描述符无效EDOM	1002	数学参数超出范围(将一个不允许的值作为参数传递给数学函数)EEXIST	80	文件已经存在EMFILE	4	打开过多的文件ENOENT	2	没有这样的文件或目录ENOEXEC	1001	执行格式错误ENOMEM	8	内存不够(如没有足够内存执行exec()函数)ENOPATH	3	路径未找到ERANGE	1003	结果超出范围(如数学函数值过大)可以以两种方式来使用errno。有些函数通过其返回值来指出发生了错误。在这种情况下,可以通过检测errno的值来确定错误的性质,并采取相应的措施。如果无法知道是否发生了错误,可以检测errno。如果它不为0,则说明发生了错误,而errno的值指出了错误的性质。处理完错误后,一定要将errno的值重置为0。3、perror(  )函数   #include<stdio.h>   void perror( const  char  *msg );perror( )函数是C语言中另一个错误处理工具,该函数在stderr上显示一条消息,指出库函数调用或系统调用期间,最后发生的一个错误。函数首先打印msg指向的一条可选的、用户定义的消息,然后是冒号以及实现定义的、描述最后发生的错误消息;如果没有错误,则显示no error。函数不会根据错误来采取某种措施。
时间: 2024-11-05 21:35:52

linux c驴杂记的相关文章

linux驴杂记

1. 命令行 vim下 的Ctrl + S ,ctrl +Q: 这个功能可以用于长时间编译的时候随时把屏幕输出停住,但是编译仍然会继续,这样就不会影响到编译时间了. S:是锁屏  q:是开屏 2. Shell配置文件在~/.profile中   相关信息 http://www.cnblogs.com/jiaxiaoai/archive/2011/05/22/2053738.html 3. wc –l file  计算文件行数 wc -w file  计算文件中的单词数 wc -c file 计算

Linux内核知识杂记

1.内核调试手段 1.printk打印内核状态 2.产生opps时使用GDB查看调用栈 2.内核空间和用户空间区别,通信方式有哪些? Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0-4G.Linux内核将这4G字节的空间分为两部分.将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为"内核空间".而将较低的3G字节(从虚拟地址 0x00000000到0xBFFFFFFF),供各个进程使用,称为&quo

linux应用开发杂记(一)

1.Shell 当前目录 $(pwd) 2.Samba的配置 sudo apt-get install samba Samba的配置文件是/etc/samba/smb.conf [global] security=share [linux_share] path=/home/linux/share public=yes sudo /etc/init.d/smbd restart 3.Linux下读取磁盘硬盘容量大小的C代码实现 struct statfs diskInfo; statfs("/&

Linux基础命令杂记

今天又一次搞Linux生产环境搭建.这是种步骤很多,很繁琐而且又不得不做的事情.虽然做过很多次,但还是有很多步骤.命令不记得,每一次到处找资料很麻烦,于是将一些步骤记下,以便查找. 登录远程MySQL mysql -h 192.168.1.100 -u root -p 给MySQl非root账户分配权限 给账号user1 密码为123456 的用户testDB数据库的所有表的select,insert,update,delete权限: grant select,insert,update,del

linux网络配置杂记

11.2 11.2.1 ifcfg 查看linux路由条目 [[email protected] ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.201.106.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 10.201.106.2 0.0.0.0 UG 0 0 0 eth0 查看系统活动状态网路接口信息 [[e

linux进程管理杂记(2)

命令 vmstat vmstat [[email protected] Packages]# vmstat procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 56 15876 38204 295152 0 0 4 3 21 18 0 1 99 0 0 每隔一秒刷新

linux常用命令杂记(一)--Lsof

lsof的用法 lsof全名list opened files,也就是列举系统中已经被打开的文件.linux环境中,任何事物都是文件,设备是文件,目录是文件,甚至sockets也是文件.所以,用好lsof命令,对日常的linux管理非常有帮助. lsof是linux最常用的命令之一,通常的输出格式为:#lsof +d /usr/local/#lsof -i :22 知道22端口现在运行什么程序等等查看相应用法可以查看man帮助查找对应选项:man lsof 常见包括如下几个字段: 1.COMMA

Linux基本功自习杂记——Wed Jul 20 09:09:27 HKT 2016

a.vi查找文本 N,反方向搜索 b.查看外网ip curl ifconfig.me b.更改到上一次访问的目录 cd - d.在组中删除用户: gpasswd -d 用户名 组名 e.查看网卡速率 cat /sys/class/net/eth0/speed f.how to copy dirs/files from host to guest,or reverse? rcp -r /localdir/ [email protected]:/remotedir rcp -r [email pro

linux进程管理杂记(1)

进程命令 pstree CentOS7显示进程树 [[email protected] tmp]# pstree systemd─┬─NetworkManager─┬─dhclient │ └─2*[{NetworkManager}] ├─abrt-watch-log ├─abrtd ├─atd ├─auditd───{auditd} ├─crond ├─dbus-daemon───{dbus-daemon} ├─dhclient ├─firewalld───{firewalld} ├─logi