热门标签 | 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;非常有效的工具。


推荐阅读
  • MySQL性能优化与调参指南【数据库管理】
    本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。 ... [详细]
  • Norton Partition Magic 中 PHP 函数 error_reporting(E_ALL ^ E_NOTICE) 的详细解析与应用
    在 Windows 环境下,通过具体示例分析了 `Norton Partition Magic` 中 `PHP` 函数 `error_reporting(E_ALL ^ E_NOTICE)` 的详细解析与应用。该函数用于控制错误报告级别,例如在从 PHP 4.3.0 升级到 4.3.1 后,程序出现多处错误的原因及解决方法。本文深入探讨了错误报告配置对程序稳定性的影响,并提供了实用的调试技巧。 ... [详细]
  • 如何将PHP文件上传至服务器及正确配置服务器地址 ... [详细]
  • 本文详细解析了 MySQL 5.7.20 版本中二进制日志(binlog)崩溃恢复机制的工作流程。假设使用 InnoDB 存储引擎,并且启用了 `sync_binlog=1` 配置,文章深入探讨了在系统崩溃后如何通过 binlog 进行数据恢复,确保数据的一致性和完整性。 ... [详细]
  • 题目描述:小K不幸被LL邪教洗脑,洗脑程度之深使他决定彻底脱离这个邪教。在最终离开前,他计划再进行一次亚瑟王游戏。作为最后一战,他希望这次游戏能够尽善尽美。众所周知,亚瑟王游戏的结果很大程度上取决于运气,但通过合理的策略和算法优化,可以提高获胜的概率。本文将详细解析洛谷P3239 [HNOI2015] 亚瑟王问题,并提供具体的算法实现方法,帮助读者更好地理解和应用相关技术。 ... [详细]
  • 利用PaddleSharp模块在C#中实现图像文字识别功能测试
    PaddleSharp 是 PaddleInferenceCAPI 的 C# 封装库,适用于 Windows (x64)、NVIDIA GPU 和 Linux (Ubuntu 20.04) 等平台。本文详细介绍了如何使用 PaddleSharp 在 C# 环境中实现图像文字识别功能,并进行了全面的功能测试,验证了其在多种硬件配置下的稳定性和准确性。 ... [详细]
  • JVM参数设置与命令行工具详解
    JVM参数配置与命令行工具的深入解析旨在优化系统性能,通过合理设置JVM参数,确保在高吞吐量的前提下,有效减少垃圾回收(GC)的频率,进而降低系统停顿时间,提升服务的稳定性和响应速度。此外,本文还将详细介绍常用的JVM命令行工具,帮助开发者更好地监控和调优JVM运行状态。 ... [详细]
  • 在 Linux 系统中,`/proc` 目录实现了一种特殊的文件系统,称为 proc 文件系统。与传统的文件系统不同,proc 文件系统主要用于提供内核和进程信息的动态视图,通过文件和目录的形式呈现。这些信息包括系统状态、进程细节以及各种内核参数,为系统管理员和开发者提供了强大的诊断和调试工具。此外,proc 文件系统还支持实时读取和修改某些内核参数,增强了系统的灵活性和可配置性。 ... [详细]
  • 深入解析:RKHunter与AIDE在入侵检测中的应用与优势
    本文深入探讨了RKHunter与AIDE在入侵检测领域的应用及其独特优势。通过对比分析,详细阐述了这两种工具在系统完整性验证、恶意软件检测及日志文件监控等方面的技术特点和实际效果,为安全管理人员提供了有效的防护策略建议。 ... [详细]
  • 如何利用Apache与Nginx高效实现动静态内容分离
    如何利用Apache与Nginx高效实现动静态内容分离 ... [详细]
  • 在Android平台上利用FFmpeg的Swscale组件实现YUV与RGB格式互转
    本文探讨了在Android平台上利用FFmpeg的Swscale组件实现YUV与RGB格式互转的技术细节。通过详细分析Swscale的工作原理和实际应用,展示了如何在Android环境中高效地进行图像格式转换。此外,还介绍了FFmpeg的全平台编译过程,包括x264和fdk-aac的集成,并在Ubuntu系统中配置Nginx和Nginx-RTMP-Module以支持直播推流服务。这些技术的结合为音视频处理提供了强大的支持。 ... [详细]
  • Docker网络基础探讨了如何通过高效的技术手段实现跨主机容器间的顺畅通信与访问。本文深入分析了Docker网络架构,特别是其在多主机环境下的应用,为Go语言开发者提供了宝贵的实践指导和理论支持。 ... [详细]
  • 对于以压缩包形式发布的软件,其目录中通常包含一个配置脚本 `configure`。该脚本的主要功能是确定编译所需的各项参数,如头文件的位置和链接库的路径,并生成相应的 `Makefile` 以供编译使用。通过运行此脚本,开发者可以确保软件在不同环境下的正确编译与安装。此外,该脚本还能够检测系统依赖项,进一步提高编译过程的可靠性和兼容性。 ... [详细]
  • 在前一篇文章中,我们介绍了如何使用Requests库发送GET请求。本文将深入探讨如何通过Requests库发送POST请求,包括参数格式、请求封装等关键技巧,并通过“历史上的今天”API实例进行详细说明。 ... [详细]
  • 在Linux环境中,通过编写Shell脚本来实现自定义命令的创建与激活,能够极大地简化服务器上多个子系统的管理操作。例如,通过简单的命令如“tt”,即可快速查看各个应用程序的名称及其运行状态,从而提高系统维护的效率和便捷性。 ... [详细]
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社区 版权所有