首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UNIX环境编程

linux函数分析查询工具 1.优先推荐linux 中man命令 2.一个不错的中文Linux手册:http://cpp.ezbty.org/manpage 3.在线查英文Man手册: http://www.kernel.org...ls、cat passwd 放在这里,还有 shell。例如,请试试 man bash。 man2 用来访问 UNIX 内核提供的服务的系统调用或函数。...man4 特殊文件,比如设备驱动程序。 man5 文件格式。UNIX 几乎完全使用文本配置文件定制系统的操作。...Unix下的设备有“块设备”“字符设备”的概念,所谓块设备,就是以一块一块的数据存取的设备,字符设备是一次存取一个字符的设备。磁盘、内存都是块设备,字符设备如键盘串口。...5.linux驱动程序中字符设备块设备的三点区别 1.字符设备只能以字节为最小单位访问,而块设备以块为单位访问,例如512字节,1024字节等 2.块设备可以随机访问,但是字符设备不可以 3.字符块没有访问量大小的限制

1.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

linux网络编程之socket(十五):UNIX域套接字编程socketpair 函数

UNIX Domain Socket也提供面向流和面向数据包两种API接口,类似于TCPUDP,但是面向消息的UNIX Domain Socket也是可靠的,消息既不会丢失也不会顺序错乱。...使用UNIX Domain Socket的过程网络socket十分相似,也要先调用socket()创建一个socket文件描述符,address family指定为AF_UNIX,type可以选择SOCK_DGRAM...UNIX Domain Socket与网络socket编程最明显的不同在于地址格式不同,用结构体sockaddr_un表示,网络编程的socket地址是IP地址加端口号,而UNIX Domain Socket...三、UNIX域套接字编程注意点 1、bind成功将会创建一个文件,权限为0777 & ~umask 2、sun_path最好用一个绝对路径 3、UNIX域协议支持流式套接口与报式套接口 4、UNIX...参考: 《Linux C 编程一站式学习》 《TCP/IP详解 卷一》 《UNP》

3.1K00

unix网络编程——TCP套接字编程

); 返回:若成功返回非负数,若失败返回-1    family表示协议族,协议族取值如表1所示: family 说明 AF_INET IPv4协议 AF_INET6 IPv6协议 AF_LOCAL Unix...SOCK_DGRAM 数据报套接字 SOCK_SEQPACKET 有序分组套接字 SOCK_RAW 原始套接字 表2 套接字类型 protocol表示某个协议类型常值,或者设置为0,以选择familytype...组合的系统默认值,但并不是所有的familytype组合都是有效的,表3给出了正确组合。...指定了协议族(IPv4、Ipv6或Unix套接字类型(字节流、数据报或原始套接字),并没有指定本地协议地址或远程协议地址。...,若失败返回-1   sockfd:socket函数返回的套接字描述符   servaddr:套接字地址结构的指针   addrlen:套接字地址结构的大小   套接字地址结构必须含有服务器的IP地址端口号

1.1K10

旧闻系列-Unix编程哲学

写在前面 这应该是大学期间读的第一本操作系统方面的书,刚开始接触编程时觉得搞操作系统才是最牛X的,所以同学一起去图书馆找书,出来各种Windows操作图书,就找到一般Unix编程哲学感觉可以作为小说看看...Unix编程哲学 关于Unix编程哲学相信大家或多或少多个角度都了解或听到过一些。...比如Kiss:keep it simple, stupid "简单原则"----尽量用简单的方法解决问题----是"Unix哲学"的根本原则,也是被更多人认可的,以至于在设计模式这种微观角度或者应用架构涉及这种宏观角度...,Kiss依然是最被遵守依赖的原则,比如面对复杂应用场景设计而采用的DDD模式,根本上也是通过结构分割再组织实现的kiss的目的。...清晰的代码不容易崩溃,而且容易理解维护。重视注释。不为了性能的一丁点提升,而大幅增加技术的复杂性,因为复杂的技术会使得日后的阅读维护更加艰难。 模块原则。

58820

Unix-Linux编程实践教程-chapter08-sh

第8章 进程程序:编写命令解释器sh Unix通过将可执行代码装入进程并执行它来运行一个程序.进程是 一个程序所需的内存空间其他资源的集合 每个运行中的程序在自己的进程中运行.每个进程都有一个唯一的...进程ID,所有者,大小及其他属性 系统调用fork通过复制进程来建立一个几乎原来进程完全相同的 副本进程.这个新建的进程被称为子进程 一个程序通过调用exec函数族在当前进程中执行一个新的程序 一个程序能通过调用...wait来等待子进程的结束 调用程序能将一个字符串列表传给新程序的main函数.新的程序能通过 调用exit来回传一个8位长的值 Unix shell通过调用fork, exec, wait来运行程序...&status); wait暂停调用它的进程直到子进程结束 最终子进程会结束任务并调用 exit(n) 键盘信号发给所有连接的进程 execvp/exit call/return 这种通过参数返回值在拥有私有数据的函数间通信的模式是结构化程序...设计的基础 全局变量fork/exec 全局变量会破坏封装原则,但有时候去掉会更糟糕.Unix提供方法来建立 全局变量,环境是一些传递给进程的字符串型变量集合 execvp不是一个系统调用,而是一个库函数

97820

Unix-Linux编程实践教程-chapter09-shell

第9章 可编程的shell,shell变量环境:编写自己的shell Unix shell 运行一种成为脚本的程序.一个shell脚本可以运行程序,接受 用户输入,使用变量使用复杂的控制逻辑 if.....then 语句依赖于下属惯例:Unix程序返回0以表示成功.shell使用 wait来得到程序的退出状态 shell编程语言包括变量.这些变量存储字符串,他们可以在任何命令中使用.shell 变量是脚本的局部变量...环境用来保存会话(session)的全局设置某个程序的参数设置,shell允许 用户查看修改环境 shell是有个编程语言解释器,这个解释器解释从键盘输入的命令,也解释 存储在脚本中的命令序列 shell...包括两类变量:局部变量环境变量 对变量的操作: 赋值 var=value 引用 $var 删除 unset var 输入 read var 列出变量 set 全局化 export var code /

87230

Unix-Linux编程实践教程-chapter05-stty

第5章 连接控制:学习stty 内核在进程与外部世界之间交换数据.外部世界包括磁盘文件,终端与外部 设备,磁盘文件与终端的链接有相似之处也有差异 磁盘文件与设备文件都有名字,属性,权限位.标准文件系统调用...open,read write,close,lseek可被用于文件与设备.文件权限位以同样的方式应用于 控制设备文件磁盘文件的关闭 到磁盘文件的连接在处理传输数据方面不同于到设备文件的连接.内核中...管理与设备链接的代码被称为设备驱动程序.通过使用fcntl ioctl,进程 可以读取改变设备驱动程序的设置 到终端的链接是如此的重要,以致函数tcgetattr tcsetattr 专门用来提供 对终端驱动器的控制...Unix命令stty使得用户能够访问tcgetattr tcsetattr函数 测试位 if (flagset & MASK)… 置位flagset |= MASK 清除位flagset &= ~MASK

51310

Unix-Linux编程实践教程-chapter11-socket

第11章 连接到近端或远端的进程:服务器与Socket(套接字) 一些程序被作为单独的进程建立起来来接受发送数据.在客户/服务器模型中, 服务器进程为客户进程提供处理或数据服务 客户/服务器系统包含通信系统和协议...是一个未连接的通信端点,也是一个潜在 的文件描述符.客户进程通过把自己的socket和服务器端的socket相连来创建一个 通信连接 sockets之间的连接可以扩展到另一台机器上.每个socket以机器地址端口来标识...到管道socket的连接使用文件描述符.文件描述符为程序提供了与文件,设备 其他的进程通信的统一编程接口 Unix中的计算器:bc bc在内部启动了dc计算器程序,并通过管道与其进行通信 从bc方法中得到的思想...进程,而要与远端进程连接,需要使用socket 客户和服务器 服务器是提供服务的程序,是一个进程,等待请求,处理请求,然后循环回去 等下一个请求.客户端进程只要建立连接,与服务器交换数据即可 主机名端口...运行于因特网上的服务器其实是某台计算器上运行的一个进程.服务器在该 主机拥有一个端口.主机端口的组合才标识了一个服务器 协议 协议是服务器客户之间交互的规则.每个客户/服务器模型都必须定义一个 协议并遵守

50820

Unix-Linux编程实践教程-chapter04-pwd

第四章 文件系统:编写pwd Unix将存储在磁盘中的数据组织成文件系统.文件系统是文件 目录的组合,目录是名字指针的列表.目录中的每一个入口指向 一个文件或目录.目录包含指向父目录子目录的入口...Unix文件系统包含三个主要部份:超级块,i-节点和数据区域....节点号可能以不同的名字出现在若干个目录中.每个入口 被称为指向文件的硬链接.符号链接是通过文件名引用文件,而不是 i-节点号 若干个文件系统的目录树可被整合成一棵树.内核将一个文件系统的 目录链接到另一个文件系统的根的操作称为装载 Unix...包含若干种系统调用,允许程序员进行创建和删除目录,复制指针 删除指针,改变链接分离其他文件系统等的操作 目录与文件操作相关的系统调用: 创建目录  mkdir 删除目录 rmdir 删除文件  unlink...创建文件链接  link 改变文件或目录的名字位置  rename 改变进程的当前目录  chdir code /* spwd.c: a simplified version of pwd *

41510

Unix-Linux编程实践教程-chapter02-who

第2章 用户 文件操作与联机帮助:编写who命令 who 命令通过读系统日志的内容显示当前已登陆的用户 Unix 系统把数据存放在文件中,可以通过以下系统调用来操作文件: open(filename,...每次系统调用都会导致用户模式与内核模式的切换以及执行内核代码,所以减少 程序中的系统调用的次数可以提高程序的运行效率 程序可以通过缓冲技术来减少系统调用的次数,仅当写缓冲区满或者读缓冲区空时才调用 内核服务 Unix...内核可以通过内核缓冲来减少访问磁盘IO 的次数 Unix 中时间的处理方式是记录从某一个时间开始经过的秒数 当系统调用出错时会把全局变量errno 的值设为相应的错误代码,然后返回-1 程序可以 通过检查...errno 来确定错误的类型,并采取相应的措施 这一章涉及的知识在系统中都可以找到,联机帮助中有命令的说明,有些还会涉及命令的 实现,头文件中有结构系统常量的定义,还有函数原型的说明 在Unix 中增加命令很简单...usr/bin /usr/local/bin 或者通过alias 添加到~/.bashrc 使用系统调用open 来打开文件,如果文件被顺利打开,内核会返回一个正整数的值, 这个数值就叫做文件描述符 Unix

1.2K10

UnixMac上的Shell编程(1)

Shell这个语言吧,在很多大佬看来,他并不是一个适合新手来学习的语言,或者说它不适合入门,不管怎么说,它的历史Unix的历史是一样长的。而且最近我是尝试着迁移到unix上的。...Unix系统只识别3中文件,普通文件,目录文件,特殊文件(通常是对nuix系统的有特殊含义的文件) 5.ls ls命令可能是用的最多的命令吧,因为unix就是操作的一堆文件,你们时时刻刻知道处理的文件状态...「重命名」) 参数cp是一样的 这里需要注意一下。在执行mvcp命令时。程序不会管你第二个参数的文件是不是存在。...在unix的系统里面,所有的目录都是有两个身份的,要不他是上一级的子目录,要不是下一级的父目录。...如果目标文件打算常用源文件相同的名字,(在不同的目录里面),只需要制定目录作为第二个参数就行 cp a/b/1 d(在执行这个命令时,会发现二参数是一个目录,于是直接复制) 16.ln(不是数学概念哦

54010
领券