热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux开发初步

Linux开发初步宗旨:技术的学习是有限的,分享的精神是无限的。一、库函数与系统调用1、系统调用函数和库函数库函数是一些完成特定功能的函数ÿ

Linux开发初步


宗旨:技术的学习是有限的,分享的精神是无限的。


一、库函数与系统调用

1、系统调用函数和库函数

库函数是一些完成特定功能的函数,一般由某个标准组织制作发布,并形成一定的标准。使用库函数编写的函数一般可以应用于不同的平台而不需要做任何修改,具有很好的可移植性。

系统调用函数与操作系统直接相关,不同的操作系统所使用的系统调用可能不太一样,因此,如果两个操作系统差异很大,系统调用函数的可移植性就不高。例如windows采用的系统调用的应用程序不能直接在Linux下编译运行。

之所以使用系统调用是因为系统资源的有限性以及内核管理的方便,系统调用将上层内的应用开发与底层的硬件实现分开,上层应用不需要关注底层硬件的具体实现。Linux的系统调用使用软中断实现,使用系统调用后,该程序的状态将从用户态切换到内核态。库函数实现最终也要调用系统调用函数,但它封装了系统调用操作,从而增加了代码的可移植性。

 

2glibc函数库

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;

 

六、AStyleSourceInsight中应用【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;非常有效的工具。


推荐阅读
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文详细介绍了C语言中的指针,包括其基本概念、应用场景以及使用时的优缺点。同时,通过实例解析了指针在内存管理、数组操作、函数调用等方面的具体应用,并探讨了指针的安全性问题。 ... [详细]
  • C语言标准及其GCC编译器版本
    编程语言的发展离不开持续的维护和更新。本文将探讨C语言的标准演变以及GCC编译器如何支持这些标准,确保其与时俱进,满足现代开发需求。 ... [详细]
  • 本文探讨了如何使用自增和自减运算符遍历二维数组中的元素。通过实例详细解释了指针与二维数组结合使用的正确方法,并解答了常见的错误用法。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • Python入门:第一天准备与安装
    本文详细介绍了Python编程语言的基础知识和安装步骤,帮助初学者快速上手。涵盖Python的特点、应用场景以及Windows环境下Python和PyCharm的安装方法。 ... [详细]
  • 在Java中,this是一个引用当前对象的关键字。如何通过this获取并显示其所指向的对象的属性和方法?本文详细解释了this的用法及其背后的原理。 ... [详细]
  • 本文介绍了Linux系统中的文件IO操作,包括文件描述符、基本文件操作函数以及目录操作。详细解释了各个函数的参数和返回值,并提供了代码示例。 ... [详细]
  • 解析SQL查询结果的排序问题及其解决方案
    本文探讨了为什么某些SQL查询返回的数据集未能按预期顺序排列,并提供了详细的解决方案,帮助开发者理解并解决这一常见问题。 ... [详细]
  • 本文介绍了一种在 MySQL 客户端执行 NOW() 函数时出现时间偏差的问题,并详细描述了如何通过配置文件调整时区设置来解决该问题。演示场景中,假设当前北京时间为2023年2月17日19:31:37,而查询结果显示的时间比实际时间晚8小时。 ... [详细]
author-avatar
陈氏女子2602926065
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有