unix

  • 说说DOS和Unix的那些事

    先来给大家讲讲关于我和现代操作系统的那些事吧.在昨天以前其实我和大多数的你们一样基本上是个门外汉,小菜鸟,哦!----好吧,现在还是个小菜鸟,嘿嘿!电脑伴随你们的时间可能比我要多,也可能比我少.记得很小的时候,我不记得具体的时间了,反正那时我接触到电脑的时候基本上装的系统都是windows 98 或者 2000 ,windows ME 我没见到,我感觉和我这个年龄(22岁)相当的年轻人应该比我接触电脑早的不多,我家是我们村第一家买电脑,其实买电脑我爸为了炒股,但是后来也没炒成,反倒成了我和哥哥的

    unix, dos, 恩怨情仇May 8

  • 谈谈从Windows 和 Unix 的发展看待现代操作系统的跌宕起伏

    今天闲来无事就和大家从DOS和Unix系统开始谈谈现代操作系统的发展历史.这也是我第一次发微博,写的不好请大家见谅. 我们先来看看微软的Windows传奇的发展历史,期中充满的不为人知的秘密将为大家揭晓. 从公司创建至今,微软已经经历40个年头,而微软的第一个操作系统"MS-DOS"到现在的"Windows 10",也已经有30(1985-2015)个年头和18个版本的PC操作系统.粗略算来有以下这些: 1.MS-DOS 2.Windows 1.0 3.Window

    unix, Windows, 发展May 6

  • shell for循环和数组应用

    想实现的功能: 读取一个文件,把每一行赋值给一个数组的变量,然后用for循环打印出来 #!/bin/sh i=1 SUM=`sed -n '$=' tmp.txt` #计算文件的总行数 echo "$SUM" while read line do arr[$i]="$line" i=`expr $i + 1` done < tmp.txt echo "$i" i=1 for i in `seq $SUM` ;do echo "${

    shell, unixApril 22

  • Linux 线程模型的比较:LinuxThreads 与 NPTL

    Linux 线程模型的比较:LinuxThreads 与 NPTL 前奏:关于POSIX 可移植操作系统接口(英语:Portable Operating System Interface,缩写为POSIX),是IEEE为要在各种UNIX操作系统上运行的软件,而定义API的一系列互相关联的标准的总称,其正式称呼为IEEE Std 1003,而国际标准名称为ISO/IEC 9945.此标准源于一个大约开始于1985年的项目.POSIX这个名称是由理查德·斯托曼应IEEE的要求而提议的一个易于记忆的名

    linux, unix, nptl, 线程, LinuxThreadsJanuary 29

  • Linux:挂接(mount)命令的使用方法

    挂接命令(mount) 首先,介绍一下挂接 (mount) 命令的使用方法, mount 命令参数非常多,这里主要讲一下今天我们要用到的. 命令格式: mount [-t vfstype] [-o options] device dir 其中: 1.-t vfstype 指定文件系统的类型,通常不必指定. mount 会自动选择正确的类型.常用类型有: 光盘或光盘镜像: iso9660 DOS fat16 文件系统: msdos Windows 9x fat32 文件系统: vfat Windo

    redhat, linux, unix, Windows, ExtJanuary 27

  • Unix / Linux 线程的实质
    Unix / Linux 线程的实质

    线 程 线程与进程的比较 概述: 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行. 相对进程而言,线程是一个更加接近于

    linux, unix, 线程, 用户级线程, 内核级线程January 15

  • Unix / Linux 库函数与系统调用的区别联系

    库函数 与 系统调用 的区别联系 一,概念 系统调用(英语:system call),指运行在用户空间的应用程序向操作系统内核请求某些服务的调用过程. 系统调用提供了用户程序与操作系统之间的接口.一般来说,系统调用都在内核态执行.由于系统调用不考虑平台差异性,由内核直接提供,因而移植性较差(几乎无移植性). 库函数(library function),是由用户或组织自己开发的,具有一定功能的函数集合,一般具有较好平台移植性,通过库文件(静态库或动态库)向程序员提供功能性调用.程序员无需关心平台差

    linux, unix, 库函数, 系统调用January 14

  • 2014年的学习计划后期总结和复习计划

    1. 学习和需要复习的书籍(计划花3个月的时间:2014年11月-2015年1月) 1. TCP/IP详解卷1 2. unix网络编程卷1 3. UNIX环境高级编程 https://github.com/leichaojian/APUE 4. K&R https://github.com/leichaojian/K-R 5. 计算机网络:自顶向下方法

    unix, 算法October 26

  • TCP/IP详解卷1:第九章(IP选路)
    TCP/IP详解卷1:第九章(IP选路)

    备注:本节内容均来自书上(由于没有环境,所以无法考证) 1. IP层工作流程 2. 选路原理 IP选路的三个基本步骤: 1) 搜索匹配的主机地址 2) 搜索匹配的网络地址 3) 搜索默认表项(一般网络号为0) 1. 简单路由表 1) 标志和各参数的含义 U:该路由可以使用 G:该路由是到一个网关.如果没有设置该标志,说明目的地是直接相连的. G标志区分了间接路由和直接路由.其区别在于:发往直接路由的分组中不但具有指明目的端的IP地址,还具有其链路层地址.当分组被发往一个间接路由时,IP地址指明的

    unix, tcp/ip详解卷1October 26

  • TCP/IP详解卷1:第八章(traceroute程序)
    TCP/IP详解卷1:第八章(traceroute程序)

    1. traceroute程序的操作 1. 使用traceroute而不使用IP记录路由选项(RR)的三个原因 1) 并不是所有的路由器都支持记录路由选项,因此该选项在某些路径上不能使用. 2) 记录路由一般是单向的选项.发送端设置了该选项,那么接收端不得不从收到的IP首部中提取出所有的信息,然后全部返回给发送端. 3) IP首部中留给选项的空间有限,只能存放9个IP地址. 2. traceroute的原理 当路由器收到一份IP数据报,如果其TTL字段是0或1,则路由器不转发该数据报(接收到这种

    unix, tcp/ip详解卷1October 26

  • TCP/IP详解卷1:第七章(ping程序)

    1. ping基础知识 ping程序的目的是为了测试另一台主机是否可达.该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答.而ICMP回显请求和回显应答报文如下: unix系统在实现ping程序时是把ICMP报文中的标识符字段置为发送进程的ID号.这样即使在同一台主机上同时运行了多个ping程序实例,ping程序也可以识别出返回的信息. 序列号从0开始,每发送一次新的回显请求就加1.ping程序打印返回的每个分组的序列号,允许我们查看是否有分组丢失,失序或重复. 2. ping

    unix, tcp/ip详解卷1October 26

  • APUE笔记七
    APUE笔记七

    1. 信号基础 信号是软件中断,提供了一种处理异步事件的方法.由于产生信号的事件对进程而言是随机出现的,所以进程不能简单的测试一个变量来判别是否出现了一个信号,而是必须告诉内核"在此信号出现时,请执行以下操作".一般按以下三种方式操作: 1) 忽略此信号. 2) 捕捉信号 3) 执行系统默认动作. 2. signal函数 简单的signal接口定义如下: void (*signal(int signo, void (*func)(int)))(int); signo参数是信号名.fun

    unix, APUEOctober 26

  • APUE笔记六
    APUE笔记六

    1. fork函数 fork函数用于创建一个新进程,但返回两个值:子进程返回0,而父进程返回的是子进程的ID.但子进程是父进程的副本,并不共享存储空间,只共享正文段. #include <stdio.h> #include <unistd.h> int glob = 6; char buf[] = "a write to stdout\n"; int main( void ) { int var; pid_t pid; var = 88; if ( write(

    unix, APUEOctober 26

  • APUE笔记五
    APUE笔记五

    1. main函数和进程终止 当内核执行C程序时,在调用main前先调用一个特殊的启动例程.可执行程序文件将此启动例程指定为程序的起始地址.启动例程从内核取得命令行参数和环境变量值,然后调用main函数. 而有8种方式使进程终止: 5种正常终止: 1) 从main返回. 2)调用exit. 3) 调用_exit或_Exit. 4) 最后一个线程从其启动例程返回. 5) 最后一个线程调用pthread_exit. 3种异常终止: 1) 调用abort. 2) 接到一个信号并终止 3) 最后一个线程

    unix, APUEOctober 26

  • APUE笔记四
    APUE笔记四

    1. 缓冲区 标准I/O提供了三种类型的缓冲: 1) 全缓冲:在填满标准I/O缓冲区后才进行实际I/O操作. 2) 行缓冲:输入和输出遇到换行符的时候,标准I/O执行I/O操作. 3) 不带缓冲 通常,系统默认的是: 1) 标准出错是不带缓冲的 2) 如若是涉及终端设备的其他流,则它们是行缓冲的:否则是全缓冲的. #include <stdio.h> void pr_stdio( const char *, FILE * ); int main( void ) { FILE *fp; fput

    unix, APUEOctober 24

  • APUE笔记三
    APUE笔记三

    1. 文件类型 文件包含以下几种类型:1)普通文件 2)目录文件 3)块特殊文件(带缓冲的访问文件,每次访问以固定长度为单位进行)4)字符特殊文件(不带缓冲的访问文件,访问长度可变)5) FIFO 6)套接字(socket) 7) 符号链接. S_ISREG()---> 普通文件 S_ISDIR()-->目录文件 S_ISCHR-->字符特殊文件 S_ISBLK()-->块特殊文件 S_ISFIFO-->管道或FIFO S_ISLNK()-->符号链接 S_ISSOCK

    unix, APUEOctober 24

  • APUE笔记二
    APUE笔记二

    1. 文件的基本操作及空洞文件 #include <stdio.h> #include <fcntl.h> #include <unistd.h> int main( void ) { int fd; int n; char buf[ 10 ] = "abcdefghij"; char buf1[ 10 ] = "ABCDEFGHIJ"; if ( ( fd = open( "test", O_RDWR | O

    unix, APUEOctober 24

  • UNP卷1:第二十章(广播)
    UNP卷1:第二十章(广播)

    1. 单播和广播的比较 UDP数据报单播示例: 1. 通过ARP将IP地址转换为目的以太网地址:00:0a:95:79:bc:b4 2. 中间主机的以太网接口看到该帧后把它的目的以太网地址与自己的以太网地址(00:04:ac:17:bf:38)进行比较.既然它们不一致,该接口于是忽略这个帧.可见单播帧不会对该主机造成任何额外开销,因为忽略它们的是接口而不是主机. 3. 右侧主机的以太网接口也看到这个帧,当它比较该帧的目的以太网地址和自己的以太网地址时,会发现它们相同.该接口于是读入整个帧,读入完

    unix, unix网络编程卷1October 24

  • UNP卷1:第十五章(unix域协议)

    1. 概述 unix域协议并不是一个实际的协议族,而是在单个主机上执行客户/服务器通信的一种方法.unix域提供两类套接字:字节流套接字(类似TCP)和数据报套接字(类似UDP).使用unix域协议有如下的优势: (1)unix域套接字往往比通信两端位于同一个主机的TCP套接字快出一倍. (2)unix域套接字可用于在同一个主机上的不同进程之间传递描述符. (3)unix域套接字较新的实现把客户的凭证(用户ID和组ID)提供给服务器,从而能够提供额外的安全检查措施. unix域中用于标识客户和服

    unix, unix网络编程卷1October 24

  • UNP卷1:第十四章(高级I/O函数)

    1. 套接字超时 在涉及到套接字的I/O操作上设置超时的方法有以下三种: (1)调用alarm,它在指定超时期满时产生SIGALRM信号.这种方法涉及信号处理,而信号处理在不同的实现上存在差异,而且可能干扰进程中现有的alarm调用. (2)在select中阻塞等待I/O(select有内置的时间限制),以此代替直接阻塞在read或write调用上. (3)使用较新的SO_RCVTIMEO和SO_SNDTIMEO套接字选项. 1)使用SIGALRM为connect设置超时 static void

    unix, unix网络编程卷1October 24

  • UNP卷1:第十三章(守护进程和inetd超级服务器)
    UNP卷1:第十三章(守护进程和inetd超级服务器)

    1. 概述 守护进程是在后台运行且不与任何控制终端关联的进程.unix系统通常有很多守护进程在后台运行,执行不同的管理任务. 守护进程没有控制终端通常源于它们由系统初始化脚本启动.然而守护进程也可能从某个终端由用户在shell提示符下键入命令行启动,这样的守护进程必须 亲自脱离与控制终端的关联,从而避免与作业控制,终端会话管理,终端产生信号等发生任何不期望的交互,也可以避免在后台运行的守护进程非预期的输出到终 端. 守护进程有多种启动方法: 1.在系统启动阶段,许多守护进程由系统初始化脚本启动.

    unix, unix网络编程卷1October 24

  • APUE笔记一
    APUE笔记一

    1. 读取当前目录下所有的文件名 #include <stdio.h> #include <dirent.h> int main( int argc, char *argv[] ) { DIR *dp; struct dirent *dirp; if ( argc != 2 ) printf("usage: ls directory_name" ); if ( ( dp = opendir( argv[ 1 ] ) ) == NULL ) printf( &qu

    unix, APUEOctober 24

  • UNP卷1:第十一章(名字与地址转换)

    1. gethostbyname函数 #include <netdb.h> struct hostent *gethostbyname( const char *hostname ); 返回:若成功则为非空指针,若出错则为NULL且设置h_errno 而hostent的结构如下: struct hostent{ char *h_name; char *h_aliases; int h_addrtype; int h_length; char **h_addr_list; }; 书上的例子如下:

    unix, unix网络编程卷1October 24

  • UNP卷1:第八章(基本UNP套接字编程)

    1. 简单的UDP回射程序 1) 服务器udpsrv.c #include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <netinet/in.h> #include <sys/types.h> #define MAXLINE 1024 #define SA struct sockaddr void dg_echo(int sockfd, SA *pcliaddr,

    unix, unix网络编程卷1October 24

  • UDP卷1:第六章(I/O复用:select和poll函数)
    UDP卷1:第六章(I/O复用:select和poll函数)

    0. 概述 在第五章的TCP客户同时处理两个输入:标准输入和TCP套接字.我们遇到的问题是在客户阻塞于fgets调用期间,服务器进程会被杀死.服务器TCP虽然正确的给客户TCP发送了一个FIN,但是既然客户进程正阻塞于从标准输入读入的过程,它将看不到这个EOF,直到从套接字读时为止(可能经过很长时间).这样的进程需要一种预先告知内核的能力,使得内核一旦发现进程指定的一个或多个I/O条件就绪(也就是说输入已准备好被读取,或者描述符已能承接更多的输出),它就通知进程.这个能力称为I/O复用,是由se

    unix, unix网络编程卷1October 23

  • UNP卷1:第五章(TCP客户/服务器程序示例)

    1. 经典的回射程序 1) 服务器程序srv.c #include <stdio.h> #include <stdlib.h> #include <time.h> #include <sys/socket.h> #include <sys/types.h> #include <fcntl.h> #include <netinet/in.h> #include <errno.h> #define MAXLINE

    unix, unix网络编程卷1October 23

  • UNP卷1:第四章(基本TCP套接字编程)
    UNP卷1:第四章(基本TCP套接字编程)

    0.TCP连接的建立和终止 1) 三次握手 建立一个TCP连接时会发生下述情形: (1)服务器必须准备好接受外来的连接.这通常通过调用socket,bind和listen这三个函数来完成,我们称之为被动打开. (2)客户通过调用connect发起主动打开.这导致客户TCP发送一个SYN(同步)分节,它告诉服务器客户将在(待建立的)连接中发送的数据的初始序列号.通常SYN分节不携带数据,其所在IP数据报只含有一个IP首部,一个TCP首部及可能有的TCP选项. (2-1)TCP选项之MSS选项: 发

    unix, unix网络编程卷1October 23

  • UNP卷1:第三章(套接字编程简介)

    1. 套接字结构 1) IPv4套接字地址结构 truct in_addr{ in_addr_t s_addr; }; struct sockaddr_in{ uint8_t sin_len; sa_family_t sin_family; in_port_t sin_port; struct in_addr sin_addr; char sin_zero[8]; }; 我们通常只使用三个字段:sin_family,sin_addr和sin_port.如下图所示: bzero( &servadd

    unix, unix网络编程卷1October 23

  • UNP卷1:第一章(简介)

    1. 时间获取程序 服务端:srv.c #include <time.h> #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdlib.h> #include <fcntl.h> #define SA struct sockaddr #define MAXLINE 102

    unix, unix网络编程卷1October 23

  • TCP/IP详解卷1:第六章(ICMP:internet控制报文协议)
    TCP/IP详解卷1:第六章(ICMP:internet控制报文协议)

    1. ICMP基础知识 ICMP经常被认为是IP层的一个组成部分.它传递差错报文以及其他需要注意的信息.ICMP报文通常被IP层或更高层协议(TCP或UDP)使用.一些ICMP报文把差错报文返回给用户进程. 1) ICMP报文的类型 而具体的类型和代码如下: 在对ICMP差错报文进行响应时,永远不会生生成另一份ICMP差错报文(否则会无休止的产生差错报文).下面这种情况都不会导致产生ICMP差错报文: 1) ICMP差错报文(ICMP查询报文可能会产生ICMP差错报文) 2) 目的地址是广播地址

    unix, tcp/ip详解卷1October 23

  • TCP/IP详解卷1:第四/五章(ARP和RARP)
    TCP/IP详解卷1:第四/五章(ARP和RARP)

    1. ARP基础知识 数据链路层以48bit地址进行通信.所以ARP为IP地址到对应的硬件地址之间提供动态映射.而RARP是被那些没有磁盘驱动器的系统使用(一般是无盘工作站或X终端),它需要系统管理员进行手工设置. 2. 关于ARP的一个例子 我们执行一个ftp命令时: ftp bsdi 都会进行以下这些步骤: 1) 应用程序FTP客户端调用函数gethostbyname把主机名转换成32bit的IP地址.这个函数在DNS(域名系统)中称作解析器.我们也可以在/etc/hosts中查看 leic

    unix, tcp/ip详解卷1October 23

  • TCP/IP详解卷1:第三章(IP:网际协议)
    TCP/IP详解卷1:第三章(IP:网际协议)

    1. IP的不可靠和无连接 IP提供不可靠,无连接的数据报传送服务. 不可靠的意思是它不能保证IP数据报能成功到达目的地.IP仅提供尽力而为的传输服务.如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息给信源端.任何要求的可靠性必须由上层来提供(如TCP) 无连接的意思是IP并不维护任何关于后续数据的状态信息.每个数据报的处理是相互独立的. 2. IP首部 1) 4位版本:目前版本为4,即IPv4 2) 首部长度指的是首部占32bi

    unix, tcp/ip详解卷1October 23

  • TCP/IP详解卷1:第二章(链路层)
    TCP/IP详解卷1:第二章(链路层)

    1. 以太网和IEEE 802封装 2. SLIP:串行线路IP SLIP的全称是serial line IP.它是一种在串行线路上对IP数据报进行封装的简单形式.下列规格描述SLIP的帧格式: 1) IP数据报以一个称作END(0xc0)的特殊字符结束.同时,为了防止数据报到来之前的线路噪声被当做数据报内容,大多数实现在数据报开始处也传一个END字符(如果有线路噪声,那么END字符将结束这份错误的报文.这样当前的报文得以正确的传输,而前一个错误报文上交给上层后,会发现其内容毫无意义而被丢弃)

    unix, tcp/ip详解卷1October 23

  • TCP/IP详解卷1:第一章(概述)
    TCP/IP详解卷1:第一章(概述)

    1. 分层 TCP/IP通常被认为是一个四层协议系统. 1)链路层:有时也被称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡.它们一起处理与电缆的物理接口细节. 2)网络层:有时也称作互联网层,处理分组在网络中的活动,例如分组的选路.在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(internet互联网控制保温协议),以及IGMP协议(internet组管理协议) 3)运输层主要为两台主机上的应用程序提供端到端的通信.在TCP/IP

    unix, tcp/ip详解卷1October 23

  • 那些被岁月遗忘的UNIX经典著作
    那些被岁月遗忘的UNIX经典著作

    1. C程序设计语言 内容简介: 在计算机发展的历史上,没有哪一种程序设计语言像C语言这样应用广泛.本书是C语言的设计者之一Dennis M.Ritchie和著名计算机科学家Brian W.Kernighan合著的一本介绍C语言的权威经典著作.我们现在见到的大量论述C语言程序设计的教材和专著均以此书为蓝本.本书第1版中介绍的C语言成为后来广泛使用的C语言版本--标准C的基础.人们熟知的"hello,World" 程序就是由本书首次引入的.现在,这一程序已经成为众多程序设计语言入门的第一

    unix, bookOctober 23

  • Unix 分时系统的演化

    Unix 分时系统的演化 Dennis M. Ritchie Bell Laboratories, Murray Hill, NJ, 07974 翻译:寒蝉退士 译者声明:译者对译文不做任何担保,译者对译文不拥有任何权利并且不负担任何责任和义务. 原文:http://cm.bell-labs.com/cm/cs/who/dmr/hist.html 摘要 本文提供对 Unix 操作系统早期开发的简要描述.它集中在文件系统.进程控制和管道方式命令的想法的演化上.对系统开发期间的社会环境也有所关注.

    unixOctober 13

  • UNIX V7 I/O 系统

    UNIX V7 I/O 系统 Dennis M. RitchieBell 实验室 Murray Hill, New Jersey 07974 翻译:寒蝉退士 译者声明:译者对译文不做任何担保,译者对译文不拥有任何权利并且不负担任何责任和义务. 原文:http://cm.bell-labs.com/7thEdMan/vol2/iosys 摘要: 本文给出对 I/O 系统的是如何工作的概括描述.它着眼于为驱动程序作者提供指导,并且更加面向于描述设备驱动程序的环境和本质,而不是处理普通文件的文件系统的

    unixOctober 13

  • UNIX V7 实现
    UNIX V7 实现

    UNIX V7 实现 K. ThompsonBell 实验室 Murray Hill, New Jersey 07974 翻译:寒蝉退士 译者声明:译者对译文不做任何担保,译者对译文不拥有任何权利并且不负担任何责任和义务. 原文:http://cm.bell-labs.com/7thEdMan/vol2/implement 摘要 本文用高层术语描述常驻的 UNIX 内核的实现.这些讨论分为三部分.第一部分描述 UNIX 系统如何看待进程.用户.和程序.第二部分描述 I/O 系统.最后一部分描述

    unixOctober 13

  • Mac OSX 系统目录结构
    Mac OSX 系统目录结构

    1 硬盘分区 默认情况下,MAC OS X把硬盘分成了3个GPT分区.第一个就是GPT标准要求的ESP分区,这个分区很小,200MB,FAT文件系统格式.按照EFI惯例,应该用来存放操作系统的引导程序.但是苹果没有遵守这个惯例,它的引导程序boot.efi并没有存放在ESP中,这个分区只是被苹果用来存放升级固件的文件.第二个分区就是OS X的系统分区了,它占用了大部分磁盘空间,用来存放整个OS X系统和用户数据,分区文件系统格式为HFS+.第三个分区是系统恢复分区,里面存放了一个精简的OS X系

    unix, 命令, 终端, MAC, terminalJuly 30

  • DOS/Windows和Linux/Unix间的文件格式转换

    做无线传感器网络自己生产拓扑的时候一直碰到看起来相同的文件被解析成拓扑的时候却不同,一直摸不清原因,居然是这个问题,还好看见了这篇文章. DOS/Windows和Linux/Unix的文件换行回车格式不同,基于 DOS/Windows 的文本文件在每一行末尾有一个 CR(回车)和 LF(换行),而 UNIX 文本只有一个换行. 1)把Dos/Windows下的文件移至Linux/Unix系统 虽然很多程序不在乎 DOS/Windows 格式的 CR/LF 文本文件,但是有几个程序却在乎 -- 最

    unix, dos windows, 基于, DOS/Windows和Linux/Unix的文件换行回车格式不同, 的文本文件在每一行末尾有一个, CR(回车)和, LF(换行), , 文本只有一个换行。May 19

  • Unix环境高级编程10-信号处理

    信号处理函数 信号处理函数的调用,就像一个普通的函数调用.恩...异步的函数调用. 在信号处理函数调用之前,内核会将进程当前上下文(如: rip 寄存器的值,标志寄存器的值...)保存在堆栈中. 从信号处理函数返回后,内核会根据堆栈中保存的内容.恢复进程的上下文.所以信号处理函数的调用看上去就像没发生一样... int ci=0; void sigcatch(int signo){ printf("捕获到信号: %s,当前 ci: %d\n",sys_siglist[signo],ci

    unix, 信号May 15

  • Unix高级编程9-进程控制-进程关系
    Unix高级编程9-进程控制-进程关系

    进程组 进程组,若干个进程的集合. 进程组长,当一个进程的进程 ID==进程组 ID 时(即 getpid()==getpgrp())时,进程此时就是进程组长. 进程组的生存期,自进程组被创建一直到进程组中最后一个进程终止,或者退出. /** 获取 pid 标识的进程的进程组 ID @code // 当 pid,pgid 为0时的处理. if(pid == 0) pid = getpid(); @endcode */ pid_t getpgid(pid_t pid); /** 将 pid 标识的

    unix, 进程控制May 12

  • 香蕉派开源硬件 Banana PI
    香蕉派开源硬件 Banana PI

    Banana PI M1是为了配合Elastos.org 开源OS推广而推出开源硬件平台,BananaPI M1是一款比树莓派更强悍的双核Android4.2产品.BananaPI 支持 Android系统,,Debian linux系统,Ubuntulinux系统, Raspberry Pi 系统and cubieboard 系统.可以作为媒体播放器,智能路由交换器,中继器,工控机,机顶盒,网络播放器,开发板,个人娱乐学习编程软件等. Elastos将协调多CPU形成基于"软件/硬件服务&qu

    linux, unix, android, 跨平台, 嵌入式May 6

  • system V和BSD启动脚本的区别

    SysV脚本倾向于接受诸如start.stop.restart之类的参数,依它所启动的程序而定.所以你可以用 /etc/init.d/bind start 这样的命令来启动BIND,并用 /etc/init.d/bind stop 来停止BIND. 内容来自dedecms SysV的启动还倾向于使用符号链接来组织启动进程,例如在 /etc/rc.d/rc.4/中,可能会有指向别的目录中的真正的脚本的各种各样的符号链接.这些链接的命令会像是 S10network.S25xdm之类,其中的S表示启动

    unix, bsd, SystemVApril 27

  • Unix环境高级编程

    学习目标 学习Unix内核API,以及对Unix内核本身的学习 运用C++完成Unix内核API的封装;简洁,高效,赏心悦目 具体实施 每一个章节都有2个文件用于笔记记录 一个odt文件:用于记录原生API的文档,以及相关的知识点,注意查看man手册进行补充. 若干个源文件,C++封装后 从2014-2-23-第7章开始实行 封装原则 内核中大多数API根据参数不同同时具有多个功能,此时拆解为只具有单一功能的多个函数 利用类的概念将内核中相关的API与数据结构组织一起 对内核API的返回值进行合

    unix, APUEMarch 12

  • UNIX 技巧: UNIX 高手的另外 10 个习惯

    让我们面对现实吧:坏习惯很难改变.但是您已经熟悉的习惯可能更难克服.有时,重新审视某些事情可能让您遇到"啊哈,我没想到它能做到这一点!"的时刻.在 Michael Stutz 的优秀文章"UNIX 高手的 10 个习惯"的基础上,本文将提供另外 10 个 UNIX 命令行命令.工具和技术,可以使您成为更高效的 UNIX 命令行高手. 您应当采纳的其他 10 个好习惯包括: 使用文件名自动完成功能 (file name completion). 使用历史扩展. 重用以

    unixJanuary 16

  • C的温故知新

    几个数据类型定义辨识 char **argv//argv:pointer to char int (*day)[13]//day:pointer to array[13] of int int *day[13]//day:array[13] of pointer to int void *comp()//comp:function returning pointer to void void (*comp)()//comp:pointer to function returning void i

    unixJanuary 10

  • 400 - Unix ls

    题意: 读入一批文件名, 按 Unix 下的 ls 命令进行输出. 即按总列数为 60 列, 取最大文件名长度+2 为列宽(最后一列的列宽为最大文件名长度); 文件名按字典序从小到大进行输出, 先填满一列, 再填另一列. 思路: 1. 计算最大文件名长度为 maxLength. 2. 计算总列数为 numColumn = lineLength / (maxLength+2); 3. 计算总行数为 numRow = fileNames.size() / numColumn; 4. 输出时只能按行进

    unix, uva, 400July 24

  • Linux是什么 鸟哥的Linux私房菜
    Linux是什么 鸟哥的Linux私房菜

    1. Linux是什么 1.1 Linux是什么 1.2 Linux之前,Unix的历史 1.3 关于GNU计划 Linux是什么 我们在第零章.计算器概论里面有提到过整个计算机系统的概念, 计算机是由一堆硬件所组成的,为了有效率的控制这些硬件资源,于是乎就有操作系统的产生了. 操作系统除了有效率的控制这些硬件资源的分配,并提供计算机运作所需要的功能(如网络功能)之外, 为了要提供程序设计师更容易开发软件的环境,所以操作系统也会提供一整组系统呼叫接口来给软件设计师开发用喔! 知道为什么要讲这些了

    linux, unix, 历史, GNU计划, 鸟哥的Linux私房菜June 23

  • Convert between windows text file to Unix type

    dos2unix and unix2dos The utilities dos2unix and unix2dos are available for converting files from the Unix command line. To convert a Windows file to a Unix file, enter: dos2unix winfile.txt unixfile.txt To convert a Unix file to Windows, enter: unix

    unix, TEXT, WINJune 13