linux程序设计1
a.out 的意思是 assembler output,即汇编输出。
C语言的头文件一般位于 /usr/include/ 目录下,而依赖于特定 Linux 版本的头文件通常可在目录 /usr/include/sys/ 和 /usr/include/linux 中找到。
在 Linux 中,为了更好的保护内核,把程序运行空间分为内核空间和用户空间,它们分别运行在不同的级别上,用户进程在通常情况下不允许访问内核数据,也无法使用内核函数,但是在有些情况下,用户空间的进程需要获得一定的系统服务,这时就必须通过系统调用。
比如调用 printf(),是调用C库中的 write(),是 Write() 系统调用。UNIX系统调用会在出现错误时,把错误码写入errno全局变量,通过调用 perror() 库函数可以把该变量转换成用户可以理解的错误字符串。
每个系统调用被赋予一个全局唯一的系统调用号,用户空间进程执行一个系统调用的时候,这个系统调用号就被用来指明到底要执行哪个系统调用,进程不会提及系统调用的名称。系统调用号相当关键,一旦分配就不能再有任何变更,否则编译好的应用程序就会崩溃,此外,如果一个系统调用被删除,它所占用的系统调用号也不允许被回收利用。
应用程序应该以某种方式通知系统,告诉内核自己需要执行一个系统调用,希望系统切换到内核态,这样内核就可以代表应用程序来执行该系统调用了。通知内核机制是靠软件中断实现的:通过引发一个异常来促使系统切换到内核态去执行异常处理程序。此处的异常处理程序即系统调用处理程序 system_call()
在 Linux 系统中,实现了两类对文件IO的管理,一类是由ANSI标准提供的标准IO库函数,跨平台;一类是遵循POSIX标准,以系统调用方式给用户提供的接口函数,可移植性差。程序中频繁的使用系统调用会降低程序的运行效率,因为会在系统态和用户态之间切换。而库函数访问文件时根据需要设置了不同类型的缓冲区,从而减少了直接调用IO系统调用的次数,提高访问效率。(标准IO库函数处理了很多细节,如缓存分配等)
du 命令可以递归统计指定文件夹大小,du -sh 可以只查看指定文件夹大小。
linux每个文件都有一个节点,目录是用来保存其它文件的节点号和名字的文件,可以通过 ls -i 查看节点号。删除文件实质上是删除了这个文件对应的目录项,同时指向该文件的链接数-1,(有点像智能指针原理)硬链接可以增加链接数,硬链接和复制的区别就是,它只复制原文件的节点,可以节省磁盘空间。
cp /dev/null filename 与 echo "" > filename 的区别是,前者文件大小为0,后者为1,应该是有一个 '\0'。
exit(0) 与 return(0) 的区别:前者是退出程序,后者是返回函数。在main函数中,两者基本相同,都会进行一些清理工作,如关闭标准IO等,还可以通过 atexit(fun); 在退出时调用自定义的函数;但前者好像不会自动析构局部对象。另外 _Exit(0); 和 _exit(0); 也可以退出程序,但不会清理流缓冲区,也不会调用 atexit 中指定的函数。
#include<iostream>
#include <stdlib.h>
using namespace std; class T
{
public:
T() { cout<<"T();"<<endl; }
~T() { cout<<"~T();"<<endl; }
}; int main()
{
T t;
//exit(EXIT_SUCCESS);
return EXIT_SUCCESS;
}
英文帮助文档:
搜索 manpages,centos6.3 下通过 yum install man-pages.noarch 即可。
中文帮助文档:
https://github.com/lidaobing/manpages-zh
下载解压后,执行 autogen.sh 即可生成 configure 文件,(需要安装 autoconf 和 automake),然后就是 ./configure && make && make install
默认会安装到 /usr/local/share/man/zh_CN 目录,现在使用 man -M /usr/local/share/man/zh_CN fopen 已经可以查看中文文档。
为了方便以后使用,在 /etc/bashrc 中加上 alias cman='man -M /usr/local/share/man/zh_CN',保存退出 source /etc/bashrc,即可使用 cman 命令。
http://www.cnblogs.com/dubingsky/archive/2009/07/31/1535859.html
linux程序设计1的更多相关文章
- Linux程序设计(一)入门
1. linux程序 Linux应用程序表现为两种特殊类型的文件:可执行文件和脚本文件. 可执行文件:是计算可以直接运行的程序,相当于windows的.exe文件. 脚本文件:一组指令的集合.这些指令 ...
- Linux 程序设计的一些优化措施
Linux 程序设计的一些优化措施 这些知识是在平常的阅读中,零散的获得的,自己总结了一下,分享在这里 全局变量VS函数参数 全局变量在Linux下的驱动编程里边,用的是非常多,例如中断服务函数ISR ...
- Linux程序设计之shell程序设计
看了<linux程序设计(第4版)>(作者:Neil Matthew ,Richard Stones ,陈建 ,宋健建译).做个笔记,以备后面查看. 首先,清楚几个概念. shell编程属 ...
- Linux程序设计:进程通信
日期:忘了. 关键词:Linux程序设计:System-V:进程通信:共享内存:消息队列. 一.共享内存 1.1 基本知识 (待补充) 1.2 代码 一个基于share memory实现的 ...
- 5)Linux程序设计入门--信号处理
)Linux程序设计入门--信号处理 Linux下的信号事件 前言:这一章我们讨论一下Linux下的信号处理函数. Linux下的信号处理函数: 信号的产生 信号的处理 其它信号函数 一个实例 .信号 ...
- 6)Linux程序设计入门--消息管理
)Linux程序设计入门--消息管理 前言:Linux下的进程通信(IPC) Linux下的进程通信(IPC) POSIX无名信号量 System V信号量 System V消息队列 System V ...
- 2)Linux程序设计入门--进程介绍
)Linux程序设计入门--进程介绍 Linux下进程的创建 前言: 这篇文章是用来介绍在Linux下和进程相关的各个概念.我们将会学到: 进程的概念 进程的身份 进程的创建 守护进程的创建 .进程的 ...
- 3)Linux程序设计入门--文件操作
)Linux程序设计入门--文件操作 Linux下文件的操作 前言: 我们在这一节将要讨论linux下文件操作的各个函数. 文件的创建和读写 文件的各个属性 目录文件的操作 管道文件 .文件的创建和读 ...
- 1)Linux程序设计入门--基础知识
)Linux程序设计入门--基础知识 Linux下C语言编程基础知识 前言: 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将 会学到以下内容: 源程序编译 Makef ...
- 8)Linux程序设计入门--线程操作
)Linux程序设计入门--线程操作 前言:Linux下线程的创建 介绍在Linux下线程的创建和基本的使用. Linux下的线程是一个非常复杂的问题,由 于我对线程的学习不时很好,我在这里只是简单的 ...
随机推荐
- 【BZOJ-1941】Hide and Seek KD-Tree
1941: [Sdoi2010]Hide and Seek Time Limit: 16 Sec Memory Limit: 162 MBSubmit: 830 Solved: 455[Submi ...
- 在数据库中如果组合主键(假设为stuID和stuName)存在则更新,不存在则新增
这是今天在项目中遇到的问题,后来查了一下,有的网友说可以用存储过程,但自己现在还不会用,所以下记载下来,做为学习存贮过程的引子. 现在是在java中实现了这个if的逻辑,
- IRC(Internet Relay Chat Protocol) Protocal Learning && IRC Bot
catalogue . Abstract . INTRODUCTION . 通信协议Connection Registration Action . 通信协议Channel operations Ac ...
- CSS基础知识真难啊-background-渐变
文章参考 http://www.zhangxinxu.com/wordpress/?p=727 http://www.uqu8.com/html/2014/html-css_1105/176.html ...
- CF 435B Pasha Maximizes(贪心)
题目链接: [传送门][1] Pasha Maximizes time limit per test:1 second memory limit per test:256 megabytes ...
- Alpha版本十天冲刺——Day 3
站立式会议 会议总结 队员 今天完成 遇到的问题 明天要做 感想 鲍亮 Android端登录验证接口 子线程无法返回从服务器获取的信息. 注册接口.忘记密码接口 开发经验不足,有一个问题不知道怎么解决 ...
- Alpha版本十天冲刺——Day 7
站立式会议 祝曹鑫杰和常松童鞋生日快乐!短短几天冲刺,就迎来了三位队员的生日,希望也给我们的Alpha版本带来好运,加油! 会议总结 队员 今天完成 遇到的问题 明天要做 感想 鲍亮 上传图片接口 无 ...
- IOS - Create Push Segue Animation Without UINavigationController
APPLE提供了三种storyboard segue的方式:push,modal,custom . push segue是系统预定义的跳转方式, 为了使其能正常工作,我们还必须加载UINavigati ...
- linux下git的简单运用
linux下git的简单运用 windows下也有git,是git公司出的bash,基本上模拟了linux下命令行.许多常用的命令和linux下操作一样.也就是说,windows下的git命令操作和l ...
- Linux bash 中,如何将正常信息和错误信息输出到文件
问题描述: $ command 2>> error $ command 1>> output 是否有方法,在bash同一行,实现输出stderr到error文件,输出stdou ...