(百度百科来凑数的,哈哈~~~) 线程:有时被称为轻量级进程,是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。就绪状态是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机;运行状态是指线程占有处理机正在运行;阻塞状态是指线程在等待一个事件(如某个信号量),逻辑上不可执行。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。 线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。 创建线程: 创建线程函数: 继续阅读 >>


刘生玺 17/07/27 21:01:42
说些废话:话说从留校以来,linux C已经看了大半,然而自己还没有系统的总结许多的知识点。今天想来真乃是一大“罪状”啊!!!哈哈哈~~于是乎决定,利用这几天的时间对学过的小知识点系统性的总结一下。PS:仅作为个人的参考资料吧!如果对你有帮助,那真的是瞎猫碰上死耗子了^-_-^ 进程:一个程序被加载到内存当中运行,那么在内存当中的那个数据就是进程。 进程与程序的区别:进程是运行的程序,程序只是存放在硬盘上的可执行代码。 1.获取进程的各种ID (非负数) 书上说是函数声明在unistd.h 头文件中,但我man 之后发现是在sys/types.h 和 unistd.h之中,说明尽信书不如无书啊!!!! #include <sys/types.h> #include <unistd.h> pid_t getpid(void); pid_t getppid(void); uid_t getuid(void); //获得进程的实际用户ID uid_t ge 继续阅读 >>


刘生玺 17/07/24 11:40:17
转载 + 个人见解(转载地址) 进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。现在让我来简单解释一下!!! 1. 计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。 2. 假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。也就是说,单个CPU在一个精确的时间点只能运行一个任务。 3. 进程就好比工厂的车间,它代表CPU所能处理的单个任务。任一精确的时间点,CPU总是运行一个进程,其他进程处于非运行状态。(电力无法同时供给) 4. 一个车间里,可以有很多工人。他们协同完成一个任务。 线程就好比车间里的工人。一个进程可以包括多个线程。 6. 车间的空间是工人们共享的,比如许多房间是每个工人都可以进出的。这象征一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。 7. 可是,每间房间的大小不同,有些房间最多只能容纳一个人,比如厕所。里面有人的时候,其他人就不能进去了。这代表一个线程使用 继续阅读 >>


刘生玺 17/07/22 17:47:13
理解递归,首先要理解栈是什么 栈:就是放在桌子上的一叠盘子 官方解释:栈(stack)又名堆栈,是一种运算受限的线性表。仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 人话解释:所谓的栈就是一个线性表。最上面的一个盘子就是栈顶,最下面的一个盘子就是栈底。出栈(pop)就是取走最上面的一个盘子,入栈(push)就是往上面放一个盘子。 小示例(数组实现的顺序栈): #include<stdio.h> #include<stdlib.h> #define MAX 30 #define FALSE -1 #define TRUE 0 typedef struct //data structure of stack { int data[MAX]; int top ; }stack; 继续阅读 >>


刘生玺 17/07/19 08:37:33
github:面向开源及私有软件项目的托管平台 一些基本概念: 仓库(Repository): 就是项目 收藏(star) : 收藏某个项目,方便查看 关注(watch): 关注某个项目,该项目更新时会收到通知 事务卡片(lssue) : 讨论话题 克隆项目(fork):该fork 的项目独立存在于你的账户下 发起请求(Pull request):以fork的项目发起请求,以修改fork 源 合并(Merge):如果别人 Fork 了咱们的项目,对其进行了修改,并且提出了 Pull 请求,这时咱们就可以对这个 Pull 请求进行审核。如果这个 Pull 请求的内容满足咱们的要求,并且跟咱们原有的项目没有冲突的话,就可以将其合并到咱们的项目之中 Gist:如果没有项目可以开源或者只是单纯的想分享一些代码片段,就可以选择 Gist 如图是一个仓库的主页: 更多应用请自行查阅!! git:免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目 第一步:安装git 与初始化。不想 继续阅读 >>


刘生玺 17/06/21 17:52:48
read 函数 -#include <unistd.h> -ssize_t read(int fd, void *buf, size_t count); 从fd 所指的文件中读取count 个字节到buf 中。返回实际读取到的字节数,有错误发生则返回-1。读取文件时,文件读写指针会会随着读取到的字节数移动。 write 函数 - #include <unistd.h> - ssize_t write(int fd, const void *buf, size_t count); 把buf中的count个字节写入fd 所指的文件中, 返回实际写入的字节数,有错误发生则返回-1。写入文件时,文件读写指针会随着写入的字节数移动。 lseek 函数:控制文件指针的位置 -#include <sys/types.h> -#include <unistd.h> -off_t lseek(int fd, off_t offset, int whence); offset 根 继续阅读 >>


刘生玺 17/06/18 20:42:53
1.什么是系统编程? 程序员使用系统调用或者C语言本身所携带的库函数来设计和编写具有某一特定功能的程序。 2.什么是系统调用?与C语言函数库有什么区别? 系统调用是操作系统提供给程序员所使用的接口。 C语言的函数库封装了系统调用。 3.什么是文件访问权限? 就是你可以对这个文件做什么。如:读出数据,写入数据,执行它等。。。 在linux下有fchmod和chmod 两个函数可以修改文件访问权限 -int chmod(const char *path,mode_t mode);//mode 代表访问权限 -int fchmod(int fildes ,mode_T mode); chmod 一文件名作为第一个参数 fchmod—以文件描述符作为第一个参数 - 参数mode 数值 字符常量值 对应的八进制数值 含义 S_IRUSR 00400 所有者可读取 S_IWUSR 00200 所有者可写入 S 继续阅读 >>


刘生玺 17/06/18 17:46:43
计算自己还有几天过生日 1 #!/bin/bash 2 echo -e "I will calculate you brithday .Please input you brithday(MMDD)" 3 read brithday 4 brithday_temp=$(echo $brithday | grep '[0-9]\{4\}') 5 if [ "$brithday_temp" == "" ] ; then 6 echo "You input is wrong !!" 7 exit 0 8 fi 9 now=$(date +%m%d) 10 if [ "$brithday" == "$now" ] ; then 11 echo "Today is your brithday " 12 elif [ "$brithday" -gt "$now" ] ; then 13 year=$(date +%Y) 14 brithd 继续阅读 >>


刘生玺 17/06/04 22:25:47
grep 命令 :强大的文本’搜索’工具 1.grep -n 'word' file_name 在file_name文件中找到word所在的所有行并显示。-n 为显示行号。 2.grep 'w[ea]ll' file_name 在file_name文件中找到wall 或者是well 所在的所有行并显示 3.grep 'w[^e]ll' file_name 在file_name文件中找到”非well” 所在的所有行并显示 4.grep '^The' file_name 在file_name文件中找到以The开头的所有行并显示(请与上一条命令进行区别) 5. grep 'goo..le' file_name 在file_name文件中找到goo(任意字符)(任意字符)le的所有行并显示(即总共七个字符) 6.grep 'g*g' file_name 在file_na 继续阅读 >>


刘生玺 17/05/30 16:12:51
正则表达式 : 处理字符串的一种方法。 下面是我总结出来的几个必须牢记的要点。 1. 以行为单位进行处理。 2.正则表达式与通配符完全不同(如果你以前了解通配符,请在学习正则时,完全忘记它们!!) 说在前面:使用正则时,语系会对结果产生很大的影响,如果你的结果与他人的不同时,请检查语系是否正确。 常用基础正则表达式: 1.[:alnum:] 代表 0-9,a-z,A-Z 2.[:alpha:] a-z,A-Z 3.[:upper:] A-Z 4.[:lower:] a-z 5.[:digit:] 0-9 以上据鸟哥所言,很重要,但我目前很少用到。 正则字符 意义 ^word 查找字符位于行首 word$ 查找字符位于行尾 .(没错就是一个点) 一定有一个任意字符 \ 转义字符,转义特殊符号 * 重复前一个字符0~~无穷多次 继续阅读 >>


刘生玺 17/05/29 17:42:18