10 2011 档案

摘要:玩转VIM编辑器-程序员的一些技巧 代码语法高亮显示 可以通过使用:syn on和:syn off来开启或关闭代码语法高亮显示,效果如下: 巧妙的缩排 对于特定的区域可以通过使用它CTRL+V来选择,然后通过>来整块向右移动,或者通过 >gv 来支持无限次移动,按ESC退出即可。 在vim中访问man帮助页面 在vim编辑器中,如果想查询那个wo... 阅读全文
posted @ 2011-10-31 20:47 郭—大—侠 阅读(395) 评论(0) 推荐(0)
摘要:玩转VIM编辑器-文本操作 插入和添加文本 键 描述 i 在当前位置插入文本 I 在当前行首插入文本 o 在当前行的下一行新建一行并插入文本 O 在当前行的上一行新建一行并插入文本 :r filename 在当前行的下一行开始插入filename中的内容 :r !command 在当前行的下一行插入command的输出信息 a 在当前光标后添加文... 阅读全文
posted @ 2011-10-31 19:02 郭—大—侠 阅读(1375) 评论(0) 推荐(0)
摘要:centos自动挂载ntfs CentOS内核没有添加对ntfs的支持,所以我们需要安装ntfs-3g和fuse,这个有详细的介绍。安装完成后我们就可以使用mount –t ntfs-3g来对U盘或者移动硬盘进行挂载了。 那我们能不能对其进行自动挂载呢,这里涉及到每次插入不同的盘,可能出现的盘符不相同,所以在fstab中不能写这些东西,当然,双系统是另外一回事了。 ... 阅读全文
posted @ 2011-10-31 09:19 郭—大—侠 阅读(628) 评论(1) 推荐(1)
摘要:VirtualBox使用教程 安装增强功能 在设备->安装增强功能,也可以通过Host+D来安装。 设置共享文件夹 在设备-共享文件夹中,选择本机的一个文件目录,比如VirtualBoxShareFile;然后再虚拟系统中建个文件夹,例如/home/name/ShareFil... 阅读全文
posted @ 2011-10-30 21:32 郭—大—侠 阅读(391) 评论(0) 推荐(0)
摘要:玩转VIM编辑器-导航移动 如果像前面所说的,只是通过h、j、k、l 来移动光标,在大量移动的过程中会发现比较耗费时间并且效率不高。这一节就主要通过一些快捷的导航移动方式来快速移动光标到达指定的位置。 数值参数 比如准备向右移动4个字符,就可以使用4l,相当于llll。 滚动整页或半页 导航键 描述 CTRL+F 向下滚动整页 CTRL+B 向上滚动整页 CT... 阅读全文
posted @ 2011-10-29 16:07 郭—大—侠 阅读(1461) 评论(0) 推荐(2)
摘要:偶然看到这个,差点笑嗝屁了!! 阅读全文
posted @ 2011-10-26 17:41 郭—大—侠 阅读(215) 评论(0) 推荐(0)
摘要:关于文件IO流的读书笔记明天有时间贴上。 今天主要做了一下GTK and pgplot的test:result as following: 阅读全文
posted @ 2011-10-26 17:13 郭—大—侠 阅读(179) 评论(0) 推荐(0)
摘要:Steve Jobs 卸任后,2个月就辞世了;Dennis Ritchie,c语言和UNIX之父,也辞世了;今天刚刚收到消息Lisp之父,人工智能之父John McCarthy辞世大牛们果然是一起来的,也是一起去呀……………… 阅读全文
posted @ 2011-10-26 13:39 郭—大—侠 阅读(209) 评论(0) 推荐(0)
摘要:关于vi-vim-关于vim的一些基础知识 文本编辑器有很多,图形模式下有gedit、kwrite等编辑器,文本模式下的编辑器有vi、vim(vi的增强版本)和nano。vi和vim是Linux系统中最常用的编辑器。 直到Emacs的出现(1984年以后),vi几乎是所有“黑客”所使用的标准UNIX编辑器。 vi编辑器是Unix的世界中一个相当强大的可视化编辑器,vi编辑器是所有Linux... 阅读全文
posted @ 2011-10-25 16:04 郭—大—侠 阅读(894) 评论(0) 推荐(0)
摘要:今天在hcorr上完成了share memory的测试。通过PCI驱动存取LTA数据并通过PGPLOT实时刷新显示。工作流程:include#include#include#includecreate share memory shm_id = shmget(shm_key_id, SHM_BUF_SIZE, 0666|IPC_CREAT); if (shm_id ... 阅读全文
posted @ 2011-10-24 19:50 郭—大—侠 阅读(181) 评论(0) 推荐(0)
摘要:8.15 进程时间 在1 . 1 0节中说明了墙上时钟时间、用户CPU时间和系统CPU时间。任一进程都可调用times函数以获得它自己及终止子进程的上述值。 #include clock_t times(struct tms *buf ) ;返回:若成功则为经过的墙上时钟时间(单位:滴答),若出错则为-1此函数填写由buf指向的tms结构,该结构定义如下:struct tms { clock... 阅读全文
posted @ 2011-10-24 19:04 郭—大—侠 阅读(147) 评论(0) 推荐(0)
摘要:8.15 用户标识 任一进程都可以得到其实际和有效用户I D及组I D。但是有时希望找到运行该程序的用户的登录名。我们可以调用getpwuid(getuid( ) ),但是如果一个用户有多个登录名,这些登录名又对应着同一个用户I D,那么又将如何呢?(一个人在口令文件中可以有多个登录项,它们的用户I D相同,但登录s h e l l则不同。)系统通常保存用户的登录名(见6 . 7节),用getl... 阅读全文
posted @ 2011-10-24 18:50 郭—大—侠 阅读(179) 评论(0) 推荐(0)
摘要:2012-10-22Unix环境高级编程-进程控制 8.14 进程会计 很多UNIX系统提供了一个选择项以进行进程会计事务处理。当取了这种选择项后,每当进程结束时内核就写一个会计记录。典型的会计记录是3 2字节长的二进制数据,包括命令名、所使用的CPU时间总量、用户ID和组ID、起动时间等。本节将比较译细地说明这种会计记录,这样也使我们得到了一个再次观察进程的机会,得到了使用5 . 9节中所介绍的... 阅读全文
posted @ 2011-10-24 18:42 郭—大—侠 阅读(471) 评论(0) 推荐(0)
摘要:What follows is a description of the procedure I have followed to have PGPLOT working under Mac OS X and Linux. Note that this is a two step procedure: you need to install the graphic library first, a... 阅读全文
posted @ 2011-10-24 10:35 郭—大—侠 阅读(315) 评论(0) 推荐(0)
摘要:8.12 system函数 在程序中执行一个命令字符串很方便。例如,假定要将时间和日期放到一个文件中,则可使用6 . 9节中的函数实现这一点。调用time得到当前日历时间,接着调用localtime将日历时间变换为年、月、日、时、分、秒、周日形式,然后调用strftime对上面的结果进行格式化处理,最后将结果写到文件中。但是用下面的system函数则更容易做到这一点。 system("date >... 阅读全文
posted @ 2011-10-23 19:06 郭—大—侠 阅读(256) 评论(0) 推荐(0)
摘要:http://guoshaoguang.com/wp-content/uploads/2011/10/cropped-p_large_a5mR_25c0000419eb2d0c.jpg 阅读全文
posted @ 2011-10-23 15:40 郭—大—侠 阅读(141) 评论(0) 推荐(0)
摘要:http://guoshaoguang.com/wp-content/uploads/2011/10/cropped-11111111111111111.jpg 阅读全文
posted @ 2011-10-23 15:37 郭—大—侠 阅读(128) 评论(0) 推荐(0)
摘要:8.11 解释器文件 这种文件是文本文件,其起始行的形式是: #! pathname [optional- a rg u m e nt] 在惊叹号和pathname之间的空格是可任选的。最常见的是以下列行开始: #!/bin/sh pathname通常是个绝对路径名,对它不进行什么特殊的处理(不使用PAT H进行路径搜索)。对这种文件的识别是由内核作为exec系统调用处理的一部分来完成的。内核使调... 阅读全文
posted @ 2011-10-22 20:33 郭—大—侠 阅读(212) 评论(0) 推荐(0)
摘要:8.11 更改用户ID和组ID 在UNIX系统中,特权是基于用户和组ID的,当程序需要增加特权,或需要访问当前并不允许访问的资源时,我们就需要更换自己的用户ID或组ID。 一般而言,在设计应用程序的时候,我们总是试图使用最小特权(lease privilege)模型。 可以用setuid函数设置实际用户ID和有效用户ID。与此类似,可以用s e t g i d函数设置实际组... 阅读全文
posted @ 2011-10-22 20:32 郭—大—侠 阅读(212) 评论(0) 推荐(0)
摘要:8.10 exec函数 用fork函数创建子进程后,子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程完全由新程序代换,而新程序则从其m a i n函数开始执行。因为调用exec并不创建新进程,所以前后的进程ID并未改变。exec只是用另一个新程序替换了当前进程的正文、数据、堆和栈段。 有六种不同的exec函数可供使用,它们常常被统称为exec函数。这些exec... 阅读全文
posted @ 2011-10-22 20:30 郭—大—侠 阅读(271) 评论(0) 推荐(0)
摘要:http://guoshaoguang.com/wp-content/uploads/2011/10/ipad%E5%A3%81%E7%BA%B81-1000x2881.jpg 阅读全文
posted @ 2011-10-21 14:14 郭—大—侠 阅读(92) 评论(0) 推荐(0)
摘要:http://guoshaoguang.com/wp-content/uploads/2011/10/two.jpg 阅读全文
posted @ 2011-10-21 14:14 郭—大—侠 阅读(101) 评论(0) 推荐(0)
摘要:http://guoshaoguang.com/wp-content/uploads/2011/10/ipad%E5%A3%81%E7%BA%B81-1000x288.jpg 阅读全文
posted @ 2011-10-21 14:12 郭—大—侠 阅读(136) 评论(0) 推荐(0)
摘要:http://guoshaoguang.com/wp-content/uploads/2011/10/1.jpg 阅读全文
posted @ 2011-10-21 14:06 郭—大—侠 阅读(109) 评论(0) 推荐(0)
摘要:http://guoshaoguang.com/wp-content/uploads/2011/10/我-21.jpg 阅读全文
posted @ 2011-10-21 12:29 郭—大—侠 阅读(132) 评论(0) 推荐(0)
摘要:http://guoshaoguang.com/wp-content/uploads/2011/10/142426338218099852.jpg 阅读全文
posted @ 2011-10-21 12:28 郭—大—侠 阅读(99) 评论(0) 推荐(0)
摘要:http://guoshaoguang.com/wp-content/uploads/2011/10/我-2.jpg 阅读全文
posted @ 2011-10-21 12:27 郭—大—侠 阅读(134) 评论(0) 推荐(0)
摘要:8.9 竞态条件 从本书的目的出发,当多个进程都企图对共享数据进行某种处理,而最后的结果又取决于进程运行的顺序时,则我们认为这发生了竞态条件( race condition)。如果在fork之后的某种逻辑显式或隐式地依赖于在fork之后是父进程先运行还是子进程先运行,那么fork函数就会是竞态条件活跃的滋生地。通常,我们不能预料哪一个进程先运行。即使知道哪一个进程先运行,那么在该进程开始运行后,所... 阅读全文
posted @ 2011-10-20 15:51 郭—大—侠 阅读(235) 评论(0) 推荐(0)
摘要:8.8 wait3和wait4函数-进程控制 wait3和wait4提供的功能比wait、waitpid和waitid所提供的功能要多一个,这与附加参数rusage有关。该参数要求内核返回由终止进程及其所有子进程使用的资源汇总。 #include #include #include #include pid_t wait3(int *statloc, int options, struct ru... 阅读全文
posted @ 2011-10-19 19:43 郭—大—侠 阅读(494) 评论(0) 推荐(0)
摘要:8.7 waitid函数-进程控制 waitid函数类似于waitpid,但提供了更多的灵活性。 #include int waitid(idtype_t idtype, id_t id, siginfo_t *infop. int options);//返回值:成功返回0,出错返回-1与waitpid相似,waitid允许一个进程指定要等待的子进程。但它使用单独的参数表示要等待的子进程的类型... 阅读全文
posted @ 2011-10-19 19:42 郭—大—侠 阅读(270) 评论(0) 推荐(0)
摘要:8.6 wait和waitpid函数-进程控制 当一个进程正常或异常终止时,内核就向其父进程发送SIGCHLD信号。因为子进程终止是个异步事件(这可以在父进程运行的任何时候发生),所以这种信号也是内核向父进程发的异步通知。父进程可以忽略该信号,或者提供一个该信号发生时即被调用执行的函数(信号处理程序)。对于这种信号的系统默认动作是忽略它。第1 0章将说明这些选择项。现在需要知道的是调用wait或w... 阅读全文
posted @ 2011-10-19 19:40 郭—大—侠 阅读(310) 评论(0) 推荐(0)
摘要:8.5 exit函数-进程控制 如同7 . 3节所述,进程有三种正常终止法及两种异常终止法。 (1) 正常终止: a) 在main函数内执行return语句。如在7 . 3节中所述,这等效于调用exit。 b) 调用exit函数。此函数由ANSI C定义,其操作包括调用各终止处理程序(终止处理程序在调用a t exit函数时登录),然后关闭所有标准I / O流等。因为ANSI C并... 阅读全文
posted @ 2011-10-19 19:39 郭—大—侠 阅读(192) 评论(0) 推荐(0)
摘要:8.4 vfork函数-进程控制 vfork函数的调用序列和返回值与fork相同,但两者的语义不同。 vfork用于创建一个新进程,而该新进程的目的是exec一个新程序(如上节(2) 中一样)。程序1 - 5中的shell基本部分就是这种类型程序的一个例子。vfork与fork一样都创建一个子进程,但是它并不将父进程的地址空间完全复制到子进程中,因为子进程会立即调用exec (或exit ),于是... 阅读全文
posted @ 2011-10-19 19:37 郭—大—侠 阅读(180) 评论(0) 推荐(0)
摘要:8.3 fork函数-进程控制 一个现有进程可以调用fork函数创建一个新进程。 #include pid_t fork(void);//返回值:子进程中返回0,父进程中返回子进程ID。出错返回-1.由fork创建的新进程被成为子进程child process。fork函数被调用一次,但是返回两次,两次返回的唯一区别是子进程的返回值是0,而父进程的返回值是新子进程的进程ID。将子进程ID返回 父... 阅读全文
posted @ 2011-10-19 19:35 郭—大—侠 阅读(270) 评论(0) 推荐(0)
摘要:8.2 进程标识 每个进程都有一个非负整型的唯一进程ID。因为进程ID标识符总是唯一的,常将其用做其他标识符的一部分以保证其唯一性。例如,应用程序有时就把进程ID作为名字的一部分创建一个唯一的路径名。 虽然是唯一的,但是进程ID可以重用。当一个进程终止后,其进程ID就可以再次使用了。大多数UNIX系统实现延迟重用算法,使得赋予新建进程的ID不同于最近终止进程所使用的ID。这防止了将新进... 阅读全文
posted @ 2011-10-13 11:06 郭—大—侠 阅读(192) 评论(0) 推荐(0)
摘要:7 . 11 getrlimit和setrlimit函数 每个进程都有一组资源限制,其中某一些可以用getrlimit和setrlimit函数查询和更改。 #include #include int getrlimit(int resource, struct rlimit * rlptr) ;int setrlimit(int resource, const struct rlimit * r... 阅读全文
posted @ 2011-10-12 15:51 郭—大—侠 阅读(381) 评论(0) 推荐(0)
摘要:7.10 setjmp和longjmp函数 在C中,goto语句是不能跨越函数的。而执行这种跳转功能的是函数setjmp和longjmp。这两个函数对于处理发生在很深的嵌套函数调用中的出错情况非常有用。 考虑一下程序7 - 4的骨干部分。其主循环是从标准输入读1行,然后调用do_line处理每一输入行。该函数然后调用get_token从该输入行中取下一个记号。一行中的第一个记号假定是某种形式的一条... 阅读全文
posted @ 2011-10-12 15:48 郭—大—侠 阅读(291) 评论(0) 推荐(0)
摘要:7.9 环境变量 如同前述,环境字符串的形式是: name = value UNIX内核并不关心这种字符串的意义,它们的解释完全取决于各个应用程序。例如, shell使用了大量的环境变量。其中某一些在登录时自动设置(如HOME,USER等),有些则由用户设置。我们通常在一个shell起动文件中设置环境变量以控制shell的动作。例如,若设置了环境变量M A I L PAT H,则它告诉Bourne... 阅读全文
posted @ 2011-10-12 15:46 郭—大—侠 阅读(265) 评论(0) 推荐(0)
摘要:7.8 存储器分配 ANSI C说明了三个用于存储空间动态分配的函数。 (1) malloc。分配指定字节数的存储区。此存储区中的初始值不确定。 (2) calloc。为指定长度的对象,分配能容纳其指定个数的存储空间。该空间中的每一位( b i t )都初始化为0。 (3) realloc。更改以前分配区的长度(增加或减少)。当增加长度时,可能需将以前分配区的内容移到另一个足够大的区域,以便在尾端... 阅读全文
posted @ 2011-10-12 15:43 郭—大—侠 阅读(234) 评论(0) 推荐(0)
摘要:7.7 共享库 现在,很多UNIX系统支持共享库。Arnold [1986] 说明了系统V上共享库的一个早期实现,G i n g e l l等[1987] 则说明了S u n O S上的另一个实现。共享库使得可执行文件中不再需要包含常用的库函数,而只需在所有进程都可存取的存储区中保存这种库例程的一个副本。程序第一次执行或者第一次调用某个库函数时,用动态连接方法将程序与共享库函数相连接。这减少了每个... 阅读全文
posted @ 2011-10-12 15:42 郭—大—侠 阅读(165) 评论(0) 推荐(0)
摘要:7.6 C程序的存储空间布局 由于历史原因,C程序一直由下列几部分组成: • 正文段。这是由CPU执行的机器指令部分。通常,正文段是可共享的,所以即使是经常执行的程序(如文本编辑程序、C编译程序、shell等)在存储器中也只需有一个副本,另外,正文段常常是只读的,以防止程序由于意外事故而修改其自身的指令。 • 初始化数据段(函数外)。通常将此段称为数据段,它包含了程序中需赋初值的变量。例如, C程... 阅读全文
posted @ 2011-10-12 15:36 郭—大—侠 阅读(185) 评论(0) 推荐(0)
摘要:7.5 环境表 每个程序都接收到一张环境表。与参数表一样,环境表也是一个字符指针数组,其中每个指针包含一个以null结束的字符串的地址。全局变量environ则包含了该指针数组的地址。 extern char **environ; 例如:如果该环境包含五个字符串,那么它看起来可能如图7 - 2中所示。 图7-2 由五个字符串组成的环境、 其中,每个字符串的结束处都有一个null字符。我们称env... 阅读全文
posted @ 2011-10-11 20:38 郭—大—侠 阅读(125) 评论(0) 推荐(0)
摘要:7.4 命令行参数 当执行一个程序时,调用exec的进程可将命令行参数传递给该新程序。这是UNIX shell的一部分常规操作。在前几章的很多实例中,我们已经看到了这一点。 程序7 - 3将其所有命令行参数都回送到标准输出上。注意,通常(UNIX echo(1)程序不回送第0个参数)。 #include int main(int argc, char *argv[]){ int i; ... 阅读全文
posted @ 2011-10-11 20:37 郭—大—侠 阅读(164) 评论(0) 推荐(0)
摘要:7.3 进程终止 有8种方式使进程终止(termination),其中5中为正常终止,他们是: l 从main返回; l 调用exit; l 调用_exit或_Exit; l 最后一个线程从其启动例程返回; l 最后一个线程调用pthread_exit; 异常终止有3种方式,他们是: l 调用abort; l 接收一个信号并终止; l 最后一个线程对取消请求做出响应。 上节提及... 阅读全文
posted @ 2011-10-11 20:34 郭—大—侠 阅读(189) 评论(0) 推荐(0)
摘要:7.2 main函数 C程序总是从main函数开始执行。main函数的原型是: int main(int argc, char *argv[]) ;其中,argc是命令行参数的数目,a rg v是指向参数的各个指针所构成的数组。7 . 4节将对命令行参数进行说明。当内核起动C程序时(使用一个exec函数,8.9节将说明exec函数),在调用main前先调用一个特殊的起动例程。可执行程序文件将此起动... 阅读全文
posted @ 2011-10-11 20:32 郭—大—侠 阅读(147) 评论(0) 推荐(0)
摘要:7.1 引言下一章将介绍进程控制原语,在此之前需先了解进程的环境。本章中将学习:当执行程序时,其main函数是如何被调用的,命令行参数是如何传送给执行程序的;典型的存储器布局是什么样式;如何分配另外的存储空间;进程如何使用环境变量;进程终止的不同方式等。另外,还将说明l o n g j m p和s e t j m p函数以及它们与栈的交互作用。本章结束之前,还将查看进程的资源限制。 阅读全文
posted @ 2011-10-11 20:31 郭—大—侠 阅读(109) 评论(0) 推荐(0)
摘要:6.10 时间和日期例程 UNIX内核提供的基本时间服务是计算处国际标准时间公元1970年1月1日00:00:00以来经过的秒数,它是用数据类型time_t表示的,我们称其为日历时间:包括日期和时间。Unix在这方面与其它操作系统的区别是(a)以国际标准时而非本地时间计时,(b)可自动进行转换,例如变换到夏日制,(c)将时间和日期作为一个量值保存。 time函数可以返回当前时间和日期: #incl... 阅读全文
posted @ 2011-10-10 18:55 郭—大—侠 阅读(232) 评论(0) 推荐(0)
摘要:6.9 系统标识 POSIX1定义了uname函数,它返回与当前主机和操作系统有关的信息。 #include int uname(struct utsname *name);//返回:若成功为非负值,出错为-1通过该函数的参数向其传递一个utsname结构的地址,然后该函数填写此结构。POSIX.1只定义了该结构中最少需要的字段(它们都是字符数组),而每个数组的长度则由实现确定。某些实现在该结构... 阅读全文
posted @ 2011-10-10 18:52 郭—大—侠 阅读(182) 评论(0) 推荐(0)
摘要:6.7 其它数据文件 至此我们讨论了两个系统数据文件-口令字文件和组文件。在日常事务操作中,Unix系统还使用很多其它文件。例如,BSD网络软件有一个记录各网络服务器所提供的服务的数据文件(/etc/services),有一个记录协议信息是数据文件(/etc/protocols),还有一个则是记录网络信息的数据文件(/etc.networks)。幸运的是,对于这些数据文件的界面都与上述对口令字文... 阅读全文
posted @ 2011-10-10 18:51 郭—大—侠 阅读(173) 评论(0) 推荐(0)
摘要:6.8 登录账户记录 大多数Unix系统都提供下列两个数据文件:utmp文件,它记录当前登录进系统的各个用户;wtmp文件,它跟踪各个登录和注销事件。在Version7中,一个包含下列结构的二进制记录写入这两个文件中: struct utmp {char ut_line[8]; /* tty line: "ttyh0", "ttyd0", "ttyp0", ... */char ut_name[8... 阅读全文
posted @ 2011-10-10 18:51 郭—大—侠 阅读(144) 评论(0) 推荐(0)
摘要:6.6 实现的区别 在FreeBSD中,阴影口令文件是/etc/master.passwd,可以使用特殊命令编辑该文件,它反过来会从阴影文件爱你产生/etc/passwd的一个副本。另外,还会产生该文件的散列版本。/etc/pwd.db是/etc/passwd的散列版本,/etc/spwd.db是/etc/master.passwd的散列版本。这些为大型系统提供了更好的性能。 但是Mac OS X... 阅读全文
posted @ 2011-10-10 18:50 郭—大—侠 阅读(152) 评论(0) 推荐(0)
摘要:6.5 附加组ID 在Unix中,组的使用已经作了些更改。在Version7中,每个用户任何时候都只属于一个组。当用户登录时,系统就按口令字文件中与其相关记录中的数字组ID,赋给他实际组ID。我们可以在任何时候执行newgrp(1)以更改组ID。如果newgrp命令执行成功(关于许可权规则,请参阅手册页),则我们的实际组ID就更改为新的组ID,它将被用于后续的文件存取许可权检查。执行不带任何参数... 阅读全文
posted @ 2011-10-10 18:49 郭—大—侠 阅读(440) 评论(0) 推荐(0)
摘要:6.4 组文件 U N I X组文件( P O S I X . 1称其为组数据库)包含了表6 - 2中所示字段。这些字段包含在 中所定义的g r o u p结构中。 表6-2 /etc/group文件中的字段 说明 struct group成员 组名 char *gr_name 加密口令 char *gr_passwd 数值组ID int gr_gid 指向各用户名... 阅读全文
posted @ 2011-10-10 18:48 郭—大—侠 阅读(179) 评论(0) 推荐(0)
摘要:6.3 阴影口令字(Shadow Passwords) 在上一节我们曾提及,对U N I X口令通常使用的加密算法是单向算法。给出一个密码口令,找不到一种算法可以将其反变换到普通文本口令(普通文本口令是在P a s s w o r d :提示后键入的口令)。但是可以对口令进行猜测,将猜测的口令经单向算法变换成加密形成,然后将其与用户的加密口令相比较。如果用户口令是随机选择的,那么这种方法并不是很有... 阅读全文
posted @ 2011-10-10 18:46 郭—大—侠 阅读(619) 评论(0) 推荐(0)
摘要:6.2 口令文件 口令文件包括了以下字段,这些字段包含在中定义的passwd结构中: 说明 struct passwd成员 用户名 char *pw_name 加密口令 char *pw_passwd 数值用户ID uid_t pw_uid 数值组ID gid_t pw_gid 注释字段 char *pw_gecos 初始工作目录 char *pw_d... 阅读全文
posted @ 2011-10-10 18:45 郭—大—侠 阅读(290) 评论(0) 推荐(0)
摘要:6.1 引言-系统数据文件和信息 Unix系统的正常运行需要使用大量与系统有关的数据文件,例如,口令字文件/etc/passwd和组文件/etc/group就是经常由多种程序使用的两个文件。用户每次登录入Unix系统时,以及每次执行ls -l命令时都要使用口令字文件。 由于历史原因,这些数据文件都是ASCII文本文件,并且使用标准I/O库读这些文件。但是,对于较大的系统,顺序扫描口令字文件变得... 阅读全文
posted @ 2011-10-10 18:38 郭—大—侠 阅读(141) 评论(0) 推荐(0)
摘要:5.13 标准I/O的替代软件 标准I / O库并不完善。K o r n和Vo〔1 9 9 1〕列出了它的很多不足之处—某些属于基本设计,但是大多数则与各种不同的实现有关。 在标准I / O库中,一个效率不高的不足之处是需要复制的数据量。当使用每次一行函数fgets和fputs时,通常需要复制两次数据:一次是在内核和标准I / O缓存之间(当调用read和write时),第二次是在标准I / O缓... 阅读全文
posted @ 2011-10-09 10:38 郭—大—侠 阅读(274) 评论(0) 推荐(0)
摘要:5.12临时文件 ISO C标准I/O提供了两个函数以帮助创建临时文件。 #include char*tmpnam(char*ptr);//返回指向唯一路径名的指针;FILE*tmpfile(void);//成功则返回文件指针;失败返回NULL;tmpnam产生一个与现在文件名不同的一个有效路径名字符串。每次调用它时,它都产生一个不同的路径名,最多调用次数是TMP_MAX(238328)。TMP... 阅读全文
posted @ 2011-10-09 10:27 郭—大—侠 阅读(2002) 评论(0) 推荐(0)
摘要:5.11 实现细节 正如前述,在UNIX中,标准I/O库最终都要调用第3章中说明的I/O例程。每个I/O流都有一个与其相关联的文件描述符,可以对一个流调用fileno以获得其描述符。 #include int fileno(FILE*fp);返回值为与该流相关联的文件描述符。如果要调用dup或fcntl等函数,则需要此函数。为了了解你所使用的系统中标准I/O库的实现,最好从头文件开始。从中可以看... 阅读全文
posted @ 2011-10-08 20:34 郭—大—侠 阅读(131) 评论(0) 推荐(0)
摘要:5.10格式化I/O 1 格式化输出 执行格式化输出处理的是4个printf函数: #include int printf(const char*restrict format, ...);int fprintf(FILE*restrict fp, const char*restrict format, ...);上面两个函数的返回值:成功则返回输出字符数,失败则返回负值;int sprintf(... 阅读全文
posted @ 2011-10-08 20:20 郭—大—侠 阅读(281) 评论(0) 推荐(0)
摘要:5.9 定位流 有三种方法定位标准I/O流。 (1) ftell和fseek。它们都假定文件的位置可以存放在一个长整型中。 (2) ftello和fseeko函数。Single UNIX Specification引入了这两个函数,可以使文件偏移量不必一定使用长整形。它们使用off_t数据类型代替了长整形。 (3) fgetpos和fsetpos。这两个函数是新由ANSI C引入的。它们引进了一个... 阅读全文
posted @ 2011-10-08 18:59 郭—大—侠 阅读(187) 评论(0) 推荐(0)
摘要:5.8 二进制I/O 上面所述函数以一次一个字符或一次一行的方式进行操作。如果为二进制I/O,那么我们更愿意一次读或写整个结构。为了使用getc或putc做到这一点,必须循环通过整个结构,一次读或写一个字节,麻烦且费时。若使用fputs,它在遇到null字节时就停止,而在结构中可能含有null字节,所以不能使用每次一行函数实现这种要求。相类似,如果输入数据中包含有null字节或新行符,则fgets... 阅读全文
posted @ 2011-10-08 18:40 郭—大—侠 阅读(235) 评论(0) 推荐(0)
摘要:用gcc编译c程序的时候 经常会出现implicit declaration of function '...' 的warning偶经过这几天的经验,发现主要有2种情况会产生这种warning1 没有把函数所在的c文件生成.o目标文件2 在函数所在的c文件中定义了,但是没有在与之相关联的.h文件中声明第二种情况如此:camif_fsm.c中的函数定义:void camif_start_c_with_p(camif_cfg_t *cfg, camif_cfg_t *other){// cfg->gc->other = get_camif(CODEC_MINOR);cf 阅读全文
posted @ 2011-10-08 15:50 郭—大—侠 阅读(219) 评论(0) 推荐(0)
摘要:在 2.0 版,信号系统已从 GTK 移到 GLib,因此在函数和类型的说明中有前缀 "g_" 而不是 "gtk_"。我们不打算介绍 GLib 2.0 信号系统相对 GTK 1.2 信号系统扩展的细节。在我们详细分析helloworld程序之前,我们会讨论信号和回调函数。GTK 是一个事件驱动的工具包,意味着它会等在 gtk_main() 那里,直到下一个事件发生,才把控制权传给适当的函数。控制权的传递是使用“信号”的办法来完成的。(注意这里的信号并不等同于 Unix 系统里的信号,并且也不是用它们实现的,虽然使用的术语是一样的。) 当一个事件发生时,如 阅读全文
posted @ 2011-10-08 15:31 郭—大—侠 阅读(1301) 评论(0) 推荐(0)
摘要:5.7 每次一行I/O 下面两个函数提供每次输入一行的功能。 #include char* fgets(char*restrict buf, int n, FILE*restrict fp);char* gets( char* buf);这两个函数都指定了缓存地址,读入的行将送入其中。gets从标准输入读,而fgets则从指定的流读。对于fgets,必须指定缓存的长度n。此函数一直读到下一个... 阅读全文
posted @ 2011-10-08 11:29 郭—大—侠 阅读(183) 评论(0) 推荐(0)
摘要:5.6 读和写流 一旦打开了流,则可在三种不同类型的非格式化I/O中进行选择,对其进行读、写操作。 (1) 每次一个字符的I / O。一次读或写一个字符,如果流是带缓存的,则标准I / O函数处理所有缓存。 (2) 每次一行的I / O。使用fgets和fputs一次读或写一行。每行都以一个新行符终止。当调用fgets时,应说明能处理的最大行长。 (3) 直接I / O。fread和fwrite函... 阅读全文
posted @ 2011-10-08 11:14 郭—大—侠 阅读(207) 评论(0) 推荐(0)
摘要:5.5 打开流 下列三个函数打开一个标准I/O流。 · #include · FILE *fopen(const char *restrict pathname, const char *restrict type);· FILE *fropen(const char *restrict pathname, const char *restrict ... 阅读全文
posted @ 2011-10-08 10:55 郭—大—侠 阅读(275) 评论(0) 推荐(0)
摘要:突然想起个笑话:一个具有多年编程功力的程序员一天突发兴致要学习书法了,于是就准备了笔墨纸砚,并身着素衣,一副大师模样,手握狼毫深思良久,终于在洁白如玉的宣纸写下:Hello World看看就明白了……原来(教材跟不上啊。。):python v3.0以后的版本中将v2.x版本的print 改为了print().所以此处调用print("Hello World!")则可成功。 阅读全文
posted @ 2011-10-06 19:22 郭—大—侠 阅读(253) 评论(0) 推荐(0)
摘要:Linux 系统是自带python的. 但是一般的版本都比较低如果需要使用高版本的python 则需要自己 编译并安装编译python 前需要先安装 编译环境使用 yum install gcc gcc-c++ autoconf automake 来安装编译环境下载python.官网的python下载页面打不开了.http://www.python.org/ftp/python/ 这个地址可以下... 阅读全文
posted @ 2011-10-06 16:34 郭—大—侠 阅读(196) 评论(0) 推荐(0)
摘要:我最开始用Linux的目的就是方便开发,同时接触更多的底层。一段时间后发现,Linux对我来说什么都好,就是help doc不如Windows。经常是遇到一个问题,却找不相应文档,硬着头皮去论坛提问,又被一句“请先阅读《提问的智慧》”给打了回来。最早在 Windows XPE上面开发时,充分体会到MSDN的方便,所以在Linux下一直关注有没有一个同等替代品。其实Linux下的Howto和说明很多... 阅读全文
posted @ 2011-10-06 15:28 郭—大—侠 阅读(1306) 评论(0) 推荐(0)