随笔分类 -  Linux环境编程

摘要:如题,下面是一个用linux shell脚本编写的通讯录,已实现了“增、删、查”功能,“改”功能比较复杂,待续~~ 1 #!/dev/bash 2 3 # Name of address book 4 BOOK="address-book.txt" 5 6 exit=0 7 8 add() { 9 # Ask the user for a name and assign to a variable10 echo -n "Name of person: " 11 read name12 13 # Ask the user for a phone numb. 阅读全文
posted @ 2012-12-18 14:51 beanmoon 阅读(1392) 评论(0) 推荐(0) 编辑
摘要:When a C program is executed by the kernelby one of theexecfunctions, which we describe inSection 8.10.a special start-up routine is called before themainfunction is called. The executable program file specifies this routine as the starting address for the program; this is set up by the link editor 阅读全文
posted @ 2012-10-23 15:21 beanmoon 阅读(192) 评论(0) 推荐(0) 编辑
摘要:#include <unistd.h>pid_t fork(void);由fork创建的新进程为子进程。fork函数被调用一次,但返回两次,两次返回的唯一区别是子进程的返回值为0,而父进程的返回值则是新子进程的进程ID。将子进程ID返回给父进程的理由是:因为一个进程的子进程可以有多个,并且没有一个函数使一个进程可以获得其所有子进程的进程ID。fork使子进程得到返回值为0的理由是:一个进程只会有一个父进程,所以子进程总是可以调用getppid以获得父进程的进程ID(进程ID 0总是由内核交换进程使用,所以一个子进程的进程ID不可能是0)子进程是父进程的副本。子进程获得父进程数据空间 阅读全文
posted @ 2012-10-20 11:15 beanmoon 阅读(512) 评论(0) 推荐(0) 编辑
摘要:1、已知文件流指针,获取对应的文件描述符int fileno(FILE *stream); 主要应用:如果程序先前用fopen打开了一个文件,但是又想对其进行锁定操作, 例如 int fcntl(int fildes, int command, struct flock *flock_structure)(注意:command为F_GETLK, F_SETLK, F_SETLKW中其中一者) 或者 int lockf(int fd, int cmd, off_t len),就得先用fileno得到对应的文件描述符后再进行fcntl/lockf操作。2、已知文件描述符,获取对应的文件流指针 FI 阅读全文
posted @ 2012-10-20 11:15 beanmoon 阅读(1310) 评论(0) 推荐(0) 编辑
摘要:linux(unix)进程与文件的关系错综复杂,本教程试图详细的阐述这个问题。包括: 1、linux多/单进程与多/单文件对于文件流和描述符在使用时的关联情况及一些需要注意的问题。 2、fork,vfork流缓冲等对文件操作的影响。1、linux文件系统结构首先补充一点基础知识,了解一下linux文件系统。如下图所示: 图1磁盘,分区和文件系统应该明白,上图所示结构是硬盘中文件存放方式的一种逻辑表现形式,与进程无关。对于其中一些术语,见下面的解释。i节点:包含文件/目录的几乎全部-适用于放置在硬盘上的,需要长久保存的信息。例如:文件所有者,文件类型,i节点号(存放在目录块中),主次设备号,.. 阅读全文
posted @ 2012-10-20 11:10 beanmoon 阅读(1211) 评论(0) 推荐(0) 编辑
摘要:在嵌入式的开发和测试中,有时候一些问题只能在特定的环境下才能重现,重现的时机和条件都难以把握,可能很多次的测试才能偶尔的重现一次问题,这给我们的调试和修改都带来很多不便之处还有一种难以跟踪调试的情形,在大型的软件项目中,要从数万行甚至更多的代码中准确的找到问题所在,靠设断点和单步跟踪的方法是很麻烦很需要时间的.这些问题可以通过Core Dump的方式,或者说事后调试(postmortem debug)技术,来协助分析.主要方法是在程序崩溃的时候,将程序的内存映象加上调试信息保存到一个文件中,这后通过分析这个所谓的Core文件来找到程序崩溃的原因.Core Dump的名称来源于以前工业界的叫法- 阅读全文
posted @ 2012-10-19 18:23 beanmoon 阅读(1407) 评论(0) 推荐(0) 编辑
摘要:#===============================================================## 个人的$HOME/.bashrc文件, 基于bash-2.05a(或更高版本)## 最后更新日期: 星期2 4月15 20:32:34 CEST 2003## 这个文件(一般情况下)被只会被交互式shell读取. # 这里可以定义你的别名, 函数, # 和其他的一些交互式特征, 比如你的提示符. ## 这个文件(开始时)是为Solaris设计的, # 但是基于Redhat的默认.bashrc文件# --> 为Linux修改. # 你在这里看到的大部分代码都 阅读全文
posted @ 2012-10-10 12:21 beanmoon 阅读(576) 评论(0) 推荐(0) 编辑
摘要:1、 管道概述及相关API应用1.1 管道相关的关键概念管道是Linux支持的最初Unix IPC形式之一,具有以下特点:管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。1.2管道的创建:#include 阅读全文
posted @ 2012-09-26 18:10 beanmoon 阅读(680) 评论(0) 推荐(0) 编辑
摘要:(1)exec函数说明fork函数是用于创建一个子进程,该子进程几乎是父进程的副本,而有时我们希望子进程去执行另外的程序,exec函数族就提供了一个在进程中启动另一个程序执行的方法。它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新程序的内容替换了。另外,这里的可执行文件既可以是二进制文件,也可以是Linux下任何可执行脚本文件。(2)在Linux中使用exec函数族主要有以下两种情况当进程认为自己不能再为系统和用户做出任何贡献时,就可以调用任何exec 函数族让自己重生。如果一个进程想执行另一 阅读全文
posted @ 2012-09-22 13:35 beanmoon 阅读(1234) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示