linux系统编程
文章平均质量分 86
bodogbo11
这个作者很懒,什么都没留下…
展开
-
POSIX标准IO操作
一:ANSI C与 Posix CANSI C库函数是在用户态实现,流的相应资源也存在于用户态,但无论如何实现,最终要通过内核实现对文件的读写控制。因此,在fopen()系列函数中必然调用了对操作系统的系统调用,这一系统调用在Linux系统下即为open,close,write和read等函数,这些函数都遵循posix标准。其实ANSI C库IO函数是对posix函数的封装,在其基转载 2013-01-02 11:28:49 · 921 阅读 · 0 评论 -
dup、dup2介绍
dup和dup2也是两个非常有用的调用,它们的作用都是用来复制一个文件的描述符。它们经常用来重定向进程的stdin、stdout和stderr。这两个函数的 原形如下:#include int dup( int oldfd ); int dup2( int oldfd, int targetfd ) 利用函数dup,我们可以复制一个描述符。传给该函数一个转载 2013-01-05 13:08:34 · 362 阅读 · 0 评论 -
pipe
1、 管道概述及相关API应用1.1 管道相关的关键概念管道是Linux 支持的最初Unix IPC形式之一,具有以下特点: 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程); 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件转载 2013-01-05 13:25:21 · 473 阅读 · 0 评论 -
文件的打开标志 和 文件的访问权限 关系
文件权限,主要是针对不同权限级别的登录用户,设置不同的操作文件权限。而文件标志,是使用函数打开文件时候的选择。如果我设置文件访问权限是用户可以写,而文件的打开方式是以只读方式打开可不可以?可以打开,因为"r"模式之需要检测文件是否存在,若存在就成功打开,但是由于由于打开模式是只读,而权限里没有读,所以你打开后,不能读也不能写。原创 2013-01-05 14:21:00 · 428 阅读 · 0 评论 -
守护进程
在linux或者unix操作系统中在系统的引导的时候会开启很多服务,这些服务就叫做守护进程。为了增加灵活性,root可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一定的方式配置系统。 守护进程是脱离于终端并且在后台运行的进程。守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的终端信息所打断。目录转载 2013-01-04 17:34:34 · 385 阅读 · 0 评论 -
freopen()
当我们求解acm题目时,通常在设计好算法和程序后,要在调试环境(例如VC等)中运行程序,输入测试数据,当能得到正确运行结果后,才将程序提交到oj中。但由于调试往往不能一次成功,每次运行时,都要重新输入一遍测试数据,对于有大量输入数据的题目,输入数据需要花费大量时间。 使用freopen函数可以解决测试数据输入问题,避免重复输入,不失为一种简单而有效的解决方法。 函数名:fre转载 2013-01-05 09:05:35 · 540 阅读 · 0 评论 -
Linux的inode的理解
文件名 -> inode -> device block 转自:http://www.ruanyifeng.com/blog/2011/12/inode.htmlhttp://blog.s135.com/post/295/ http://hi.baidu.com/leejun_2005/blog/item/d9aa13a53b3af6e99152ee7e.html转载 2013-01-05 16:44:03 · 341 阅读 · 0 评论 -
fcntl的close-on-exec标志
每个文件描述符都有一个close-on-exec标志。默认情况下,这个标志最后一位被设置为 0。这个标志符的具体作用在于当fork的其他进程中调用exec()族函数时,在调用exec函数之前为exec族函数释放对应的文件描述符。我们来看一下具体的实例。这是两个程序:[c-sharp] view plaincopyprint?/转载 2013-01-24 09:44:16 · 365 阅读 · 0 评论 -
文件描述符 文件描述标志 文件状态标志
文件描述符 File Descriptors文件描述标志 File Descriptors Flag文件状态标志 File Status Flag文件描述符是一个标示,非负整数,类似于windows里的句柄,为了与标准C保持一致(标准C里的文件的读写都是通过File Pointer)UNIX采用了这样的三级结构,我混淆于文件描述标志和文件状态标志,还是看转载 2013-01-10 10:17:06 · 519 阅读 · 0 评论 -
ioctl
一、 什么是ioctl。ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下: int ioctl(int fd, ind cmd, …);其中fd就是用户程序打开设备时使用open函数返回的文件标示符,cmd就是用户转载 2013-01-10 11:04:46 · 412 阅读 · 0 评论 -
linux进程的用户ID,有效ID,保存的设置ID
一个系统启动后,用户login登录后,会产生一个用户进程,该进程和其它进程一样有7个id值:实际用户id,有效用户id,保存的设置ID(set-user-id),实际组id,有效组id,添加组id以及保存的设置组ID。这里只说uid,这三个id都来自登录名。至此我们有了一个用户shell进程,当执行程序时,通常由fork+exec函数来做。由用户进程fork出来的子进程将继承父进程的uid和eui转载 2013-01-24 16:31:12 · 696 阅读 · 0 评论 -
fgets fputs
fgets:fgets函数用来从文件中读入字符串。fgets函数的调用形式如下:fgets(str,n,fp);此处,fp是文件指针;str是存放在字符串的起始地址;n是一个int类型变量。函数的功能是从fp所指文件中读入n-1个字符放入str为起始地址的空间内;如果在未读满n-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。因原创 2013-01-10 16:56:22 · 479 阅读 · 0 评论 -
linux系统调用和普通函数调用
系统调用将比普通函数调用大多数情况下花费更多的时间,应为系统调用通常由SWI产生,将耗费更多的用户空间和内核空间切换的时间原创 2013-01-10 09:32:05 · 583 阅读 · 0 评论 -
Linux上的终端设备
在Linux系统中,终端设备非常重要,没有终端设备,系统将无法向用户反馈信息,Linux中包含控制台、串口和伪终端3类终端设备。在Linux系统中,终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是Teletype的缩写,Teletype是最早出现的一种终端设备,很像电传打字机,是由Teletype公司生产的。Linux中包含如下几类终端设备:1、串行端口转载 2013-01-10 15:53:51 · 404 阅读 · 0 评论 -
确保数据存入磁盘
在理想的情况下,系统崩溃、断电、磁盘访问失败这些情况是不会出现的,开发者编写程序时也不用为这些情况担忧。不幸的是,这些情况比我们想像的还经常出现。本文描述了数据是怎样一步步被写入磁盘上的,尤其是其中被缓冲的几个步骤。本文也提供了数据被正确写盘的最佳实践,以确保意外发生的时候,数据不会丢失。主要是面向 C 语言的,其中的系统调用也有其它语言的实现。I/O缓存考虑到开发系统转载 2013-01-04 16:05:53 · 711 阅读 · 0 评论 -
确保数据存入磁盘
原文:Ensuring data reaches disk在理想的情况下,系统崩溃、断电、磁盘访问失败这些情况是不会出现的,开发者编写程序时也不用为这些情况担忧。不幸的是,这些情况比我们想像的还经常出现。本文描述了数据是怎样一步步被写入磁盘上的,尤其是其中被缓冲的几个步骤。本文也提供了数据被正确写盘的最佳实践,以确保意外发生的时候,数据不会丢失。主要是面向 C 语言的,其中的系转载 2013-01-04 15:51:58 · 637 阅读 · 0 评论 -
linux格式化输入输出函数操作
有许多的库函数可以按我们所希望的方式产生输出,而如果我们有过一些C语言编程的经验,我们就会对于这些格式感到熟悉.这些函数包括prinf以及其他的一些向文件流中写入数据的函数以及scanf和其他的一些函数从文件流中读取数据的函数.参数format字符串可包含下列三种字符类型:1. 一般文本, 伴随直接输出.2. ASCII控制字符, 如/t, /n等.3. 格式转换字符.转载 2013-01-02 11:37:13 · 5229 阅读 · 1 评论 -
Linux系统下如何查看及修改文件读写权限
查看文件权限的语句: 在终端输入:ls -l xxx.xxx (xxx.xxx是文件名) 那么就会出现相类似的信息,主要都是这些:-rw-rw-r-- 一共有10位数 其中: 最前面那个 - 代表的是类型 first那三个 rw- 代表的是所有者(user) second那三个 rw- 代表的是组群(group) last那三个 r-- 代表的是其他转载 2013-01-02 12:20:16 · 408 阅读 · 0 评论 -
ANSI C标准文件IO操作
一,概述1 ANSI C文件系统建立在C语言早期版本的缓冲文件系统(也成为格式化或高级文件系统)之上。2 流与文件的差别:C的I/O系统提供的程序员和使用设备之间的一级抽象叫做流,物理设备叫做文件。C文件系统可在终端、磁盘驱动器和磁带驱动器的众多设备上工作,不管各种设备有多大差异,ANSI 文件系统都把他们转换成称之为“流”的逻辑设备,具有极大的设备无关性。在C语言中,文件这个逻辑转载 2013-01-02 11:38:55 · 597 阅读 · 0 评论 -
shell 编程中各种括号的使用
1.()在子shell中运行(a=1);echo $a,结果是空,因为a=1不是在当前shell中运行的(a=1);(echo $a)也是空的。不在同一个子shell中数组的赋值,见最后的补充2.(())表达式计算a=1;((a++)); echo $a,这时a就是2了。3.()进程代入,可以把命令的执行结果当成文件一样读入比如comm前一般需要sort,那就可以这转载 2013-01-02 11:41:19 · 491 阅读 · 0 评论 -
linux文件缓冲区
一:缓冲区机制根据应用程序对文件的访问方式,即是否存在缓冲区,对文件的访问可以分为带缓冲区的操作和非缓冲区的文件操作:缓冲区文件操作:高级文件系统,将在用户空间中自动为正在使用的文件开辟内存缓冲区。非缓冲区文件系统:低级文件系统,如果需要,只能由用户在自己的程序中为每个文件设定缓冲区。如果采用非缓冲的文件访问方式,每次对该文件进行一次读写操作时,都需要使用读写文件系统掉用来转载 2013-01-02 11:39:35 · 458 阅读 · 0 评论 -
shell 编程中空格的使用
1.定义变量时, =号的两边不可以留空格.eg:gender=femal————rightgender =femal———–wronggender= femal———–wrong2.条件测试语句 [ 符号的两边都要留空格.eg:if [ $gender = femal ]; then——-right.echo “you are femal”;fiif转载 2013-01-02 11:41:53 · 452 阅读 · 0 评论 -
linux 文件IO和标准IO
2010-03-25 16:53 668人阅读 评论(0) 收藏 举报今日阅读《UNIX环境高级编程2》才发现一些以前从未注意过的细节。 linux编程使用的open、close、read、write等文件IO函数属于系统调用的,其实现方式是用了fctrl、ioctrl等一些底层操作的函数。而标准IO库中提供的是fopen、fclose、fread、fwrite等面向流对象的IO函转载 2013-01-03 22:56:53 · 1258 阅读 · 0 评论 -
linux内核空间和用户空间详解
内存初始化后,内核的代码和数据就常驻内存中。linux驱动程序一般工作在内核空间,但也可以工作在用户空间。下面我们将详细解析,什么是内核空间,什么是用户空间,以及如何判断他们。Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0~4G。Linux内核将这4G字节的空间分为两部分。将最高的1G字节(从虚拟地址0xC0000000到0xFF转载 2013-01-04 16:13:15 · 554 阅读 · 0 评论 -
Linux进程状态与实时操作系统进程状态区别
一、Linux进程状态与实时操作系统进程状态区别linux上进程有9种状态:1. 可运行状态进程正在运行,或者已经就绪,随时由调度程序调度执行,进程刚被创建后处于可运行状态。2. 可中断等待状态进程被挂起处于等待状态,不会被调度执行;等待某个条件的形成或接受到信号 唤醒;进程获取资源之后就会进入可运行状态。3. 不可中断等待状态收到信号不唤醒和不可运行, 进程必转载 2013-01-04 16:30:24 · 646 阅读 · 0 评论 -
linux 标准IO缓冲机制探究
一、什么是缓存I/O(Buffered I/O)缓存I/O又被称作标准I/O,大多数文件系统默认I/O操作都是缓存I/O。在Linux的缓存I/O机制中,操作系统会将I/O的数据缓存在文件系统的页缓存(page cache)中,也就是说,数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。1.缓存I/O有以下优点:转载 2013-01-04 14:02:01 · 414 阅读 · 0 评论 -
漫谈linux文件IO
在Linux 开发中,有几个关系到性能的东西,技术人员非常关注:进程,CPU,MEM,网络IO,磁盘IO。本篇文件打算详细全面,深入浅出。剖析文件IO的细节。从多个角度探索如何提高IO性能。本文尽量用通俗易懂的视角去阐述。不copy内核代码。 阐述之前,要先有个大视角,让我们站在万米高空,鸟瞰我们的文件IO,它们设计是分层的,分层有2个好处,一是架构清晰,二是解耦。让我们看一下下面这转载 2013-01-04 14:29:29 · 410 阅读 · 0 评论 -
daemon 进程为什么要fork两次
daemon进程是后台守护进程,有时候也叫精灵进程(agent).linux 下server都是daemon进程。相信大部分开发人员都知道如何去写一个daemon进程。但是另一方面,大部分人不知道为什么要这么做,不少人是从某个地方copy一个函数,拿来主义。但是具体为什么这么实现,却不是很透彻。 见过一些面试官或被面试人。很多人解释daemon进程存在的理由是因为僵死进程。或者输入输转载 2013-01-04 14:57:05 · 468 阅读 · 0 评论 -
Linux系统调用
转自 from :http://blog.csdn.net/orange_os/article/details/74850691. Linux系统调用原理 1. Linux系统调用原理 2. 系统调用的实现3. Linux系统调用分类及列表4.系统调用、用户编程接口(API)、系统命令和内核函数的关系5. Linux系统调用实例6. Linux自定义转载 2013-01-04 16:26:14 · 749 阅读 · 0 评论 -
Core文件的分析
Linux core 文件介绍1. core文件的简单介绍在一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。2. 开启或关闭core文件的生成用以下命令来阻止系统生成core文件:ulimit -c 0下面的命令可以检查生成core文件的选项是否打开:ulimit -转载 2013-02-04 14:42:23 · 561 阅读 · 0 评论