Linux
华丽邂逅_
BE FAST !
展开
-
ubuntu安装vitualenv&virtualenvwrapper
pip安装:安装虚拟命令 pip install virtualenv pip install virtualenvwrapper 配置虚拟环境 创建目录来存放虚拟环境 mkdir $HOME/.virtualenvs 打开 ~/.bashrc 文件,并添加如下: export WORKON_HOME=$HOME/.virtualenvs export V...原创 2019-05-13 16:29:38 · 241 阅读 · 0 评论 -
线程练习
用现成实现生产者消费者问题 龟兔赛跑原创 2017-11-15 17:28:13 · 278 阅读 · 0 评论 -
线程-属性分离2
#include "io.h"void* thread_fun(void* arg){ int i = 0; while (i++ < 10) { printf("i=%d\n", i); sleep(1); } pthread_exit((void*)0);}pthread_attr_t dattr = PTHREAD原创 2017-11-15 17:21:53 · 294 阅读 · 0 评论 -
线程属性-分离
#ifndef __IO_H__#define __IO_H__#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <fcntl.h>#include <unistd.h>#include <pthread.h>#endif#include "io.h"void* thr原创 2017-11-15 17:17:14 · 403 阅读 · 0 评论 -
网络通信
网络通信五要素: 目标ip,目标端口,协议,源ip,源端口。 数据链路层——ARP,RARP—– tcp:字节流,一个字节一个字节传输。架起管道(逻辑), UDP:报文三次握手:会确定协议格式、编码。。int socket(int domain,, int type, int protocol)在内核中建立一个数据结构 SOCK_SEQPACKET:结合了udp和tcp的优点。原创 2017-11-20 20:16:13 · 304 阅读 · 0 评论 -
相同机器进程间通信-信号量
高效的进程间通信 共享内存 — 实时性最好信号量#include "io.h"#include <sys/sem.h>int init(int semnums, int value){ key_t key = ftok("/etc", 100); int semid = -1; semid = semget(key, semnums, 0600 | IPC_CR原创 2017-11-20 16:20:06 · 462 阅读 · 0 评论 -
系统编程-挂起(Ctrl+Z)
#include "io.h"void sighandler(int signo){ printf("CTRL + Z clicked!\n");/*tstp*/ signal(SIGTSTP, SIG_DFL); //signal(SIGTSTP, SIG_IGN);}int main(int argc, char const *argv[]){ if (s原创 2017-11-14 19:24:07 · 506 阅读 · 0 评论 -
不可靠信号
#include "io.h"static int flag = 0;void sighandler(int signo){ signal(SIGINT, sighandler); //它会跳过 printf("test sigint signal\n"); sleep(3); flag = 1;}int main(int argc, char const *原创 2017-11-14 19:23:15 · 378 阅读 · 0 评论 -
系统编程-信号?
#include "io.h"static int varArray[10]; /*初始化了(static)*/void set(int * array, int value){ int i = 0; for (; i < 10; i++) { array[i] = value; sleep(1); }}void sighandl原创 2017-11-14 19:22:33 · 408 阅读 · 0 评论 -
alarm
#include "io.h"void sighandler(int signo){ printf("timeout\n");}int main(int argc, char const *argv[]){ /* code */ signal(SIGALRM, sighandler); alarm(5); while (1)sleep(1); r原创 2017-11-14 19:21:32 · 379 阅读 · 0 评论 -
信号屏蔽字&信号未决字
#include "io.h"#include <signal.h>void sighandler(int signo){ sigset_t newset, oldset; sigset_t pendset; sigprocmask(SIG_SETMASK, NULL, &oldset); int i = 0; printf("mask:");原创 2017-11-14 19:20:17 · 495 阅读 · 0 评论 -
linux系统编程
进程从就绪态到达阻塞状态: ctrl + z fg %id 即可挂起短跳转,长跳转 。 goto ,只能在局部 非局部跳转 setjmp, longjmp原创 2017-11-14 19:15:29 · 316 阅读 · 0 评论 -
进程间通信IPC
1. 管道:关系进程的进程间通信 父子关系 没有关系的进程通过信号进行通信 管道比共享内存的实时性好 Linux下默认遵守POSIX的进程间通信匿名管道(管道pipe) 命名管道(FIFO)套接字 高级IPC 不同主机间通信管道通信最常见的IPC方式4. 管道创建include int pipe(int fd[2]);返回:成功为0 ,失败为-1.管道的数据结构全部在内核空间完成;保原创 2017-11-17 12:03:35 · 245 阅读 · 0 评论 -
ps的 -ef 参数和grep
ps:将某个进程显示出来-A 显示所有程序。 -e 此参数的效果和指定"A"参数相同。-f 显示UID,PPIP,C与STIME栏位。 grep命令是查找中间的|是管道命令 是指ps命令与grep同时执行这条命令的意思是显示有关Apachejetspeed有关的进程UID PID PPID C STIME TTY TIME CMD各相关信息的意义:转载 2017-11-03 11:17:55 · 1363 阅读 · 0 评论 -
Unix/Linux下的open函数(O_CREAT和O_EXCL)
今天想在Ubuntu上用open()实现检测文件是否存在,若存在就read()的功能,代码如下:int fd=open(temp,O_RDONLY|O_CREAT|O_EXCL,S_IRWXU);if(-1==fd) return -2;ssize_t nbytesRead = read(fd, buffer, count);close(fd); 结果失败了,错误为“Bad转载 2017-11-02 19:13:51 · 1313 阅读 · 0 评论 -
杂
spinlock是专为防止多处理器并发而引入的一种锁。git cherry-pick用于把另一个本地分支的commit修改应用到当前分支。你的有些commit要插入到服务器中的某些commit之间,这样就会造成代码的冲突。所以这个时候就要使用Git rebase。git merge的基本用法为把一个分支或或某个commit的修改合并到现在的分支上。userm原创 2017-03-31 17:38:41 · 307 阅读 · 0 评论 -
Linux重启方式i
init 0:关机 init 1:单用户模式 init 3:完全多用户模式,标准的运行级 init 5:启动可进入X-window系统init 6:重启init 0:关机 init 1:单用户模式 init 3:完全多用户模式,标准的运行级 init 5:启动可进入X-window系统init 6:重启原创 2017-03-31 17:25:45 · 452 阅读 · 0 评论