作者:陈氏女子2602926065 | 来源:互联网 | 2023-06-13 13:07
Linux开发初步
宗旨:技术的学习是有限的,分享的精神是无限的。
一、库函数与系统调用
1、系统调用函数和库函数
库函数是一些完成特定功能的函数,一般由某个标准组织制作发布,并形成一定的标准。使用库函数编写的函数一般可以应用于不同的平台而不需要做任何修改,具有很好的可移植性。
系统调用函数与操作系统直接相关,不同的操作系统所使用的系统调用可能不太一样,因此,如果两个操作系统差异很大,系统调用函数的可移植性就不高。例如windows采用的系统调用的应用程序不能直接在Linux下编译运行。
之所以使用系统调用是因为系统资源的有限性以及内核管理的方便,系统调用将上层内的应用开发与底层的硬件实现分开,上层应用不需要关注底层硬件的具体实现。Linux的系统调用使用软中断实现,使用系统调用后,该程序的状态将从用户态切换到内核态。库函数实现最终也要调用系统调用函数,但它封装了系统调用操作,从而增加了代码的可移植性。
2、glibc函数库
C语言本身没有为常见操作(输入输出、内存管理等)提供支持,都是依靠标准函数库提供。Glibc基于如下标准:
(1)ISO C(ANSI C)
(2)POSIX
(3)Berkeley UNIX:BSD号出炉函数以及套接字。
(4)SVID(System V):进程通信,共享内存
(5)XPG(X/Open可移植性指南)
3、系统调用(系统调用时操作系统提供给外部程序的接口)
(1)系统调用函数通常在成功时返回0,失败是返回非零值。检查失败原因,要判断全局变量errno值,errno中包含错误代码。
(2)许多系统调用的返回数据通常引用参数传递。需要在函数参数中传递缓冲区地址,而返回的数据就保存在该缓冲区中。
(3)不能认为系统调用比其他函数的执行效率高。——系统调用时一个非常耗时的过程。
二、在线文档
1、man手册(man man可查看)
man1:命令。可以查看shell终端下命令使用。
man2:系统调用。内核系统调用描述。
man3:库函数调用。
man4:特殊文件。查看/dev目录下的特殊文件
man5:文件格式和约定。查看/etc/passwd等文件的格式。man /etc/passwd
man6:游戏。
man7:杂项和约定。
man8:系统管理命令。只有管理员使用的命令。
man9:内核例程。
如: man 1 ls man 2 open man 3 fread man 7 man等
2、info手册——超文本帮助系统(/usr/info)
3、--help
三、获取错误信息
调用库函数和系统调用后,执行成功返回0,或者正确值;执行失败返回-1,并把系统全局变量errno(errno.h)赋值。所有的错误代码都在errno.h文件中定义。/usr/include/asm/errno.h
为了打印具体的errno'信息,一般使用perror()函数。
void perror(const char * s); // 字符串常量
if(chmod("test02", (stabuf.st_mode& ~S_IXGRP) | S_ISGID) <0)
{
perror("stat");
exit(EXIT_FAILURE);
}
四、开发环境构成
编辑器&#xff1a;vi/vim&#xff0c;gedit&#xff0c;emacs&#xff0c;nano等【vim配置前面文章已经提到】
编译器&#xff1a;gcc 【gcc-v】
调试器&#xff1a;gdb
函数库&#xff1a;glibc
系统头文件&#xff1a;glibc_header
C开发过程&#xff1a;vim编辑保存为.c文件&#xff0c;gcc编译成可执行文件&#xff0c;出错使用gdb调试。
五、常用键盘组合键【stty –a可以查看组合键】
ctrl&#43; c&#xff1a;中断程序
ctrl&#43; \&#xff1a;退出程序
ctrl&#43; S&#xff1a;结束程序
ctrl&#43; Z&#xff1a;挂起程序
ctrl&#43; alt &#43; T&#xff1a;打开终端&#xff08;Ubuntu&#xff09;
六、AStyle在SourceInsight中应用【AStyle插件】
Astyle下载&#xff1a;https://sourceforge.net/projects/astyle/files/astyle/&#xff0c;解压路径自己定
配置AStyle格式化代码工具&#xff1a;Option —— Custom Cmmands —— Add —— 取名AStyle——Run&#xff1a;"D:\ProgramFiles\AStyle\bin\AStyle.exe" -A1 -s2 -p -j -n -c %f
配置格式化快捷键&#xff1a;Option —— Menu Assignments —— Menu下拉框选View—— 选右边的Insert —— 点击右下角的Key —— 点进Keystrokes中&#xff0c;同时按下键盘ctrl &#43; alt &#43; f确定就完成了。
astyle格式化代码工具可以让代码保持整洁有序&#xff0c;非常有效的工具。