Linux
文章平均质量分 80
Alsnoa
这个作者很懒,什么都没留下…
展开
-
实现基于静态数组的顺序表的以下基本操作:
1. 初始化 2. 尾插 3. 尾删 4. 头插 5. 头删 6. 读任意位置元素 7. 修改任意位置元素 8. 查找指定元素值的下标 9. 在任意位置插#include <stdio.h>#include <stdlib.h>#include<string.h>#define max 100 typedef struct Seqlist { ...原创 2018-03-17 19:51:39 · 279 阅读 · 0 评论 -
线程
线程1.线程的定义在一个程序里的一个执行路线就叫做线程,或者说:“一个进程内部的控制序列就是线程。”2.进程和线程的区别进程是资源竞争的基本单位,线程是程序执行的最小单位。在一个进程内的线程共享进程的 正文段和数据段,也就是定义一个函数,在各个线程中个都可以调用,如果定义一个全局变量, 在各线程中都可以访问到。除此之外,线程还共享以下资源和环境:文件描述符表、每种信号...原创 2018-06-08 18:44:17 · 306 阅读 · 0 评论 -
守护进程
#include <unistd.h>pid_t setsid(void); //创建一新的Session并且自己成为Session的Leader。该函数调用成功时返回新创建的Session的id(也就是当前进程的ID),出错返回-1;调用这个函数之前,当前进程不允许是进程组的leader否则会出错返回-1.、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、...原创 2018-06-15 15:01:14 · 231 阅读 · 0 评论 -
进程信号
信号的概念每个信号都有一个编号和一个宏定义的名称,这些宏定义可以在signal.h中找到。kill -l普通信号 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR111) SIGSEGV 12) SIGUSR2 13) SIG...原创 2018-06-01 16:50:17 · 253 阅读 · 0 评论 -
进程组、作业、会话与守护进程
1.进程组每个进程除了有一个进程ID外,还属于一进程组。通常进程组与作业相关联,可以收到同一终端的各种信号。 每个进程有唯一的一个进程组ID。组长进程可创建一个进程组,创建该组中的进程,然后终止。只要在某一个进程组中的一个进程存在,该进程组就存在,这与其组长进程是否终止无关。2.作业作业与进程组的区别:1.如果作业中某个进程创建了子进程,则该子进程属于进程组成员但不...原创 2018-06-15 12:18:45 · 321 阅读 · 0 评论 -
生产者消费者模型 、POSIX信号量、读写锁
生产者消费者模型 、POSIX信号量、读写锁 相关代码1. 生产者消费者模型列表内容2.POSIX信号量列表内容3.读写锁列表内容原创 2018-06-14 21:31:47 · 337 阅读 · 0 评论 -
生产者---消费者 、 读 者-----写者 模型相关代码实现
producter_consumer_model.c #include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<pthread.h>#define CONSUMERS_COUNT 8#define PRODUCERS_COUNT 8pthread_cond_t con...原创 2018-06-14 21:19:47 · 297 阅读 · 0 评论 -
gdb调试多进程
别人的文章,先复制下,等我有一定理解之后,再做总结。我们先看看我们的测试程序:/* in eg1.c */int wib(int no1, int no2){ int result, diff; diff = no1 - no2; result = no1 / diff; return result;}int main(){ p...转载 2018-06-05 19:01:29 · 241 阅读 · 0 评论 -
进程间通信
1.使用管道进行通信 server 创建管道mypipe,并以只读方式打开. client 以只写方式打开管道. 两者借助管道进行通信,若有一方退出,则另一方也退出。server.c#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<sys/stat.h>...原创 2018-05-29 17:55:30 · 253 阅读 · 0 评论 -
生成动态库和静态库
add.h#pragma once#include<stddef.h>int add(int a,int b);add.c#include"add.h"int add(int a, int b){ return a+b;}sub.h#pragma once#include<stddef.h>int sub(int a, int b);sub.c#...原创 2018-05-21 15:26:16 · 522 阅读 · 0 评论 -
myshell支持管道 、输入、输出、追加重定向
强调重要的一点 open 和 dup2 一定要在fork后的子进程中执行。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<ctype.h>#include<sys/wait.h>#include<s...原创 2018-05-18 18:45:14 · 692 阅读 · 0 评论 -
myshell(支持管道)
首先总结一下思路:1. 如果要支持管道就首先需要分析命令中是否包含管道。(使用stringcmp函数)2.如果包含管道就将管道符号位置为NULL,然后将管道符号前后的命令分到两个指针数组中 即:tmp1[ ]和tmp2[ ]3.这个时候需要执行两个execvp函数,我们为了保证循环的进程不会被替换,需要fork两次,分别用孙子进程执行tmp1[ ]和子进程执行tmp2[ ]。4.关于管道创建的位置...原创 2018-05-02 23:44:39 · 913 阅读 · 0 评论 -
链表笔试题1
#include "linkedlist.h"/** * * @brief 逆序打印单链表. * * * * @param head * */ void LinkListReversePrint(LinkNode* head){ if(head==NULL) { return; } Lin...原创 2018-04-20 11:50:42 · 195 阅读 · 0 评论 -
进程控制 简单myshell的实现
#include<unistd.h>#include<sys/wait.h>#include<stdio.h>#include<stdlib.h>#include<string.h> void do_parse(char *buf,char* argv[]){ int i; int argc=0; ...原创 2018-04-19 17:19:24 · 312 阅读 · 0 评论 -
进程的调度算法、task_struct结构体、虚拟内存
先来先服务 (FCFS,first come first served) 在所有调度算法中,最简单的是非抢占式的FCFS算法。 算法原理:进程按照它们请求CPU的顺序使用CPU.就像你买东西去排队,谁第一个排,谁就先被执行,在它执行的过程中,不会中断它。当其他人也想进入内存被执行,就要排队等着,如果在执行过程中出现一些事,他现在不想排队了,下一个排队的就补上。此时如果他又想排队了,只能站到队尾去。...原创 2018-03-23 19:00:19 · 622 阅读 · 0 评论 -
顺序表2
#include<stdio.h>#include<stdlib.h> #include<string.h>#define SeqListMaxSize 1000 typedef char SeqType; typedef struct SeqList { SeqType data[SeqListMaxSize]; si...原创 2018-03-18 20:43:21 · 193 阅读 · 0 评论 -
Linux的编辑器、编译器、配置文件、及其安装方法的理解
Emacs是伪装成编辑器的操作系统 有句夸张的话说:Emacs是伪装成编辑器的操作系统。细细想来,这句话并不夸张。 Emacs其实是个Lisp的解释器,因此可以用Lisp灵活地扩展。 Lisp是什么东西,这同样是种很有生命力的编程语言。在C语言还没有发明的年代,MIT的人工智能实验室写ITS操作系统时,一部分用的是汇编语言,还有一部分就是用的Lisp。现在,L...原创 2018-03-11 19:38:59 · 474 阅读 · 0 评论 -
初识Linux 对基本命令和重要目录下内容的理解
Linux 下的重要目录有 /proc 、 /sys 、/SElinux 、 /bin 、 /usr/lib 、 /usr/local 、 /var 、 /tmp 等文件内容分别为(1)/proc:特殊文件目录。这个目录采用一种特殊的文件格式(proc格式,内核支持这种格式。其中包括了全部虚拟文件。它们并不是保存在磁盘中,也不占用磁盘空间,当查看它们时,实际上看到的是内存里的...原创 2018-03-11 18:09:11 · 166 阅读 · 0 评论 -
pthread 函数中create、join 、detach的代码实现和运行结果
create.c#include<stdio.h>#include<unistd.h>#include<pthread.h>void* Entry1(void* arg){ (void)arg; while(1) { printf("hello world1!\n"); sleep(1); } retu...原创 2018-06-09 20:52:41 · 387 阅读 · 0 评论