一些C函数(嵌入式Linux)

2019-07-12 22:42发布

1.Exit( )电脑函数
函数名: exit()
所在头文件:stdlib.h(如果是”VC6.0“的话头文件为:windows.h)
功 能: 关闭所有文件,终止正在执行的进程。
exit(1)表示异常退出.这个1是返回给操作系统的。
exit(x)(x不为0)都表示异常退出
exit(0)表示正常退出
exit()的参数会被传递给一些操作系统,包括UNIX,Linux,和MS DOS,以供其他程序使用。
stdlib.h: void exit(int status);
参 数 : status //程序退出的返回值.
exit()和return的区别:
按照ANSI C,在最初调用的main()中使用return和exit()的效果相同。
但要注意这里所说的是“最初调用”。如果main()在一个递归程序中,exit()仍然会终止程序;但return将
控制权移交给递归的前一级,直到最初的那一级,此时return才会终止程序。return和exit()的另一个区别
在于,即使在除main()之外的函数中调用exit(),它也将终止程序。
_exit()与exit的区别:
头文件:
exit:#include
_exit:#include
_exit()函数:直接使进程停止运行,清除其使用的内存空间,并销毁其在内核中的各种数据结构;
exit()函数则在这些基础上作了一些包装,在执行退出之前加了若干道工序。
exit()函数与_exit()函数最大的区别就在于 exit()函数在调用 exit 系统调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件。 来源: http://baike.baidu.com/link?url=m5qJe8DhU4mVR1Re-8Q1PpqfnARmiiw2ouee7kJvgG5ArQ3s0kFDhWBhqEjbMCsd2RKxH-I61T7C4pltItNSIq 2.sleep( )电脑函数
函数名: Sleep
功 能: 执行挂起一段时间
用 法: void Sleep(DWORD dwMilliseconds);
在VC中使用带上头文件
#include
( Sleep函数存放头文件:WinBase.h)
在gcc编译器中,使用的头文件因gcc版本的不同而不同
#include
Sleep()单位为毫秒,sleep()单位为秒(如果需要更精确可以用usleep单位为微秒)
返回值
若进程/线程挂起到参数所指定的时间则返回0,若有信号中断则返回剩余秒数。
在VC中Sleep中的第一个英文字符为大写的"S"
在标准C中是sleep, 不要大写… 下面使用大写的来说明, 具体用什么看你用什么编译器. 简单的说VC用Sleep, 别的一律使用sleep.
Sleep函数的一般形式:
Sleep(unsigned long);
其中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000);
在Linux下,sleep中的“s”不大写
sleep()单位为秒,usleep()里面的单位是微秒。在内核中,sleep的实现是由pause函数和alarm函数两个实现的。
特别注意在Codeblocks环境下是无法使用sleep函数的,因为在windows上Codeblocks采用mingw(Gnu在Window环境下的编译器,可以充分使用 WindowsApi)作为编译器,而在stdlib.h中sleep的说明如下:_CRTIMP void __cdecl __MINGW_NOTHROW _sleep (unsigned long) _ _MINGW_ATTRIB_DEPRECATED;可以认为mingw舍弃了sleep函数,建议用Sleep实现sleep。 3.strerror( )
函数名:strerror、_streeor、_wcserror、_wcserror
函数作用:获取系统错误信息或打印用户程序错误信息
头文件:#include 4.EINTR:linux中函数的返回状态,在不同的函数中意义不同
write 表示:由于信号中断,没写成功任何数据
read 表示:由于信号中断,没读到任何数据
sem_wait 表示:函数调用被信号处理函数中断
recv 表示: 由于信号中断返回,没有任何数据可用
  1. memset( )函数
    函数原型:void *memset(void *s,int ch,size_t n)
    memset是计算机中C/C++语言函数。将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值, 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作,
    作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法
    例:对buf[100]j进行清零
    memset(&buf,0,sizeof(buf));