
Linuxc
Gave_Ge
越长大越迷茫
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux下递归遍历文件和文件夹
#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/stat.h>#include<string.h>#include<fcntl.h>#include<dirent.h>//利用深度优先遍历实现文件检索void df原创 2018-11-29 23:34:34 · 8568 阅读 · 1 评论 -
读写锁pthread_rwlock_t
#include <iostream>#include <pthread.h>#include <unistd.h>int Money = 0;pthread_rwlock_t rwlock = PTHREAD_RWLOCK_INITIALIZER;void* readThread(void* argv){ pthread_rwlock...原创 2018-12-24 22:13:20 · 1131 阅读 · 0 评论 -
Linux socket通信(TCP)
服务端#include<stdio.h>#include <sys/socket.h>#include<string.h>#include <arpa/inet.h>#include <unistd.h>#include <netinet/in.h>#define TCP_PORT 9999int mai...原创 2018-12-30 14:54:08 · 232 阅读 · 0 评论 -
Linux socket通信(UDP)
udp服务端#include<stdio.h>#include <sys/socket.h>#include<string.h>#include <arpa/inet.h>#include <unistd.h>#include <netinet/in.h>#define UDP_PORT 8888int m...原创 2018-12-30 18:26:15 · 1160 阅读 · 0 评论 -
Linux socket通信(多进程Linux socket通信(TCP))
#include<stdio.h>#include <sys/socket.h>#include<string.h>#include <arpa/inet.h>#include <unistd.h>#include <netinet/in.h>#define TCP_PORT 9999int main(){...原创 2018-12-30 21:48:59 · 760 阅读 · 0 评论 -
Linux socket通信(多线程Linux socket通信(TCP))
#include <stdio.h>#include <sys/socket.h>#include <string.h>#include <arpa/inet.h>#include <unistd.h>#include <netinet/in.h>#include <pthread.h>#inclu原创 2018-12-31 14:10:55 · 736 阅读 · 1 评论 -
linux下修改文件描述符最大打开个数
sudo vi /etc/security/limits.conf在end of file前面加上这两句* soft nofile 65536* hard nofile 65536保存退出即可原创 2019-01-10 23:28:59 · 945 阅读 · 0 评论 -
多路IO转接 select模型
select函数就一socket文件描述符监测函数,可以监测读和写。没有read和write时候将阻塞在那儿,相比于多进程和多线程处理,它更加节省资源。废话不多说 上demo#include <stdio.h>#include <sys/socket.h>#include <string.h>#include <arpa/inet.h>...原创 2019-01-01 13:09:02 · 166 阅读 · 0 评论 -
多路IO转接 poll模型
poll模型与select模型大同小异,也是一种轮询模型,不同之处是poll模型更加方便,不像select模型一样,每次都去设置fd_set的值,select模型最多能打开的文件描述符为1024个,即使使用ulimit -n xxx也无法改变,但是poll模型可以突破1024的限制,只需更改系统的ulimit -n配置即可。#include <stdio.h>#include ...原创 2019-01-01 15:24:27 · 217 阅读 · 0 评论 -
多路IO复用之epoll模型
#include<netinet/in.h>#include<stdio.h>#include<string.h>#include<unistd.h>#include<sys/types.h>#include<sys/socket.h>#include <sys/epoll.h>#define PO原创 2019-01-12 15:03:32 · 307 阅读 · 0 评论 -
select、poll、epoll之间的区别总结
引自https://www.cnblogs.com/Anker/p/3265058.html select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说...转载 2019-01-12 15:09:30 · 126 阅读 · 0 评论 -
linux多线程实现文件复制
之前写过一个多进程copy文件,是直接通过操作文件描述符来做的,链接如下https://blog.youkuaiyun.com/woshichaoren1/article/details/84800807此次多线程copy文件是用mmap内存映射操作,读写速度要快一些。废话不多说直接上代码#include <stdio.h>#include <pthread.h>#inc...原创 2018-12-23 23:04:10 · 2169 阅读 · 2 评论 -
线程通信之条件变量pthread_cond_t
#include<stdio.h>#include<errno.h>#include<pthread.h>#include<unistd.h>#include<stdlib.h>pthread_cond_t cond_p;pthread_cond_t cond_c;pthread_mutex_t mutex;int s...原创 2018-12-27 19:18:31 · 472 阅读 · 1 评论 -
为进程设置新会话setsid
#include<stdio.h>#include<unistd.h>#include<stdlib.h>int main(){ int pid; pid = fork(); if(pid<0) { exit(1); } if(pid == 0) { prin...原创 2018-12-16 22:24:52 · 367 阅读 · 0 评论 -
Linux 实现多进程拷贝文件
//copy.c#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include<stdlib.h>#include<sys/stat.h>#include<errno.h>#include <sys/wait.h>int main(原创 2018-12-04 23:30:40 · 1757 阅读 · 0 评论 -
利用dup和dup2在linux中实现简单的重定向输出
Linux中文件描述符 0代表标准输入文件stdin、1代表标准输出文件stdout、2代表标准错误输出文件stderr,STDOUT_FILENO是一个宏 为1#include<stdio.h>#include<unistd.h>#include<stdlib.h>#include<fcntl.h>int main(){ ...原创 2018-11-30 22:32:37 · 759 阅读 · 0 评论 -
进程间通信之管道通信(FIFO命名管道)
先贴代码写进程//fifo_w.c#include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<errno.h>#include<unistd.h>#include<fcntl.h>#include<string.h>原创 2018-12-07 22:33:56 · 366 阅读 · 0 评论 -
进程间通信之内存映射(mmap内存映射)
读数据端进程//mmanp_r.c#include<stdio.h>#include<fcntl.h>#include<stdlib.h>#include<sys/mman.h>#include<unistd.h>#include<sys/stat.h>#define len 0x1000int main...原创 2018-12-08 17:07:38 · 416 阅读 · 0 评论 -
LINUX中的64种信号及用途
信号在linux操作系统中是很重要的,信号的产生方式可以是来自键盘、由软件条件产生、调用硬件异常产生。来自系统函数调用产生、在linux中一共有64种信号 ,linux用户可以通过kill -l查看,如下1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) S...原创 2018-12-12 23:04:02 · 2723 阅读 · 0 评论 -
Linux进程设置信号屏蔽字
#include<stdio.h>#include<unistd.h>#include<signal.h>int main(){ sigset_t set; sigemptyset(&set); sigaddset(&set,SIGINT); sigprocmask(SIG_BLOCK,&set...原创 2018-12-13 00:12:20 · 324 阅读 · 0 评论 -
进程间通信之管道通信(PIPE匿名管道)
#include<stdio.h>#include<errno.h>#include<fcntl.h>#include<unistd.h>#include<stdlib.h>#include<string.h>int main(){ char cwrite[1024]; char cread[1...原创 2018-12-06 23:52:26 · 334 阅读 · 0 评论 -
从0开始写一个通用的Makefile文件
什么是Makefile文件 一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。 Makefile三要素 目标 条件 命令 ...原创 2018-12-09 18:05:24 · 221 阅读 · 0 评论 -
利用SIGUSR1和SIGUSR2实现父子进程同步输出
#include<stdio.h>#include<signal.h>#include <unistd.h>void pdosig(int num ,struct __siginfo * _siginfo, void * ptr){ static int count = 0; printf("I am parent ,pid is %d...原创 2018-12-14 23:02:19 · 1733 阅读 · 0 评论 -
CLion下如何引入libpthread.so
在vi/vim下编译一个.c的多线程文件我们可以通过gcc xxx.c -lpthread 编译xxx.c文件,在Clion下我们通过一下两种方式来运行我们的多线程程序方法1.点击左下角的Terminal,在下面输入你要编译的.c文件 比如我的如下方法2.在CMakeList.txt中添加set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread")...原创 2018-12-20 22:08:23 · 2110 阅读 · 0 评论 -
利用sigaction和sigprcmask实现自己的sleep函数
#include <stdio.h>#include <signal.h>#include <unistd.h>#include <stdlib.h>#include <time.h>void alarmSig(int num){ //此处不需要做任何事,只是确保信号被捕获}int mysleep(int n...原创 2018-12-15 22:23:08 · 216 阅读 · 0 评论 -
cmake 学习笔记
转自https://blog.youkuaiyun.com/dbzhang800/article/details/6314073 原 cmake 学习笔记(一) 2011年04月10日 21:07:00...转载 2019-06-17 20:38:27 · 304 阅读 · 0 评论