linux
殇尕默
这个作者很懒,什么都没留下…
展开
-
进程间通讯————管道
管道分为两种,一种是有名管道,一种是无名管道。有名管道:利用管道文件实现进程间通讯,管道文件仅仅是磁盘上的一个文件标识,其真实数据存储在内存上。对于管道文件的打开操作,必须是有读有写,否则open函数会阻塞;对于管道文件指向的内存中存储的数据,被读取后便不存在了。命令:mkfifo filename文件函数:open(打开文件),write(写数据),read(读取数据),close(关...原创 2018-10-15 23:41:02 · 150 阅读 · 0 评论 -
linux下线程间数据是否共享
1、同一进程中,主线程与子线程是同步运行的,所以在主线程中加入sleep语句,确保以上线程运行完成。由打印结果得到,主线程中的数据被子线程修改,所以同一进程中不同线程的数据共享。2、主线程将子线程写入文件的数据读出,所以同一进程的不同线程间的文件描述符是共享的。3、主线程中在堆区上开辟一段空间,将数据写入,子线程将其读出。打印结果如上,由此可以得到,子线程能把主线程在堆区...原创 2018-10-28 17:49:49 · 1617 阅读 · 0 评论 -
消息队列和共享内存
共享内存和消息队列都是在进程间传递数据的工具。消息队列也是队列的一种,在同一类型上先进先出,可以完成多进程间的通讯,每个数据都带有类型,读取数据的进程只会读取自己关注的类型的数据,并且同一种类型的数据在内存是分段存储的,读取端口一次只能读一段数据。消息队列操作函数:int msgget((key_t)key, int flag);int msgsnd(int msgid, const vo...原创 2018-10-24 22:12:06 · 5650 阅读 · 0 评论 -
linux下shell命令解析器
shell是一个命令语言解析器,有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给linux核心。当普通用户成功登陆,系统将执行一个称为shell的程序,shell进程提供了命令行的提示符,对普通用户用”$”作提示符,超级用户用”#”作提示符。一旦出现shell提示符,就可以键入命令名称及命令需要的参数,shell将执行这...原创 2018-11-05 16:35:33 · 4874 阅读 · 0 评论 -
linux下socket编程
各函数原型:int socket(int family, int type, int protocol);/*family:指定使用的协议族:AF_INET(IPv4) AF_INET6(IPv6) AF_LOCAL(UNIX协议) AF_ROUTE(路由套接字) AF_KEY(秘钥套接字)type:指定使用的套接字的类型:SOCK_STREAM(字节流套接字) SOCK_DGRAMpr...原创 2018-11-11 15:17:48 · 707 阅读 · 0 评论 -
UDP编程以及与TCP的区别
UDP编程函数原型:int socket(int domain, int type, int protocol);int bind(int sockfd, const struct sockaddr* my_addr, int addrlen);/*与TCP函数原型一样,参见上一篇博客。*/int recvfrom(int sockfd, void* buf, int len, int...原创 2018-11-18 14:43:18 · 201 阅读 · 0 评论 -
linux下epoll的相对于select,poll的优点
select:1、记录每种时间的结构,在数组按位来记录关注的文件描述符上的事件。2、每次最多监听1024个文件描述符,并且文件描述符最大值为1023。3、select函数返回时,通过传递的结构体变量将结果带回,并且内核会修改用户变量。①每次都必须循环探测哪些文件描述符就绪②每次调用select之前都必须重新设置三个结构体变量4、为了提高底层效率,select函数第一个参数为最大文件描述...原创 2018-12-07 17:21:57 · 761 阅读 · 0 评论