
Linux系统编程
文章平均质量分 68
奋斗的小程序员
嵌入式爬坑中......
展开
-
回文字符 Linux下编程
#include 4 #include 5 6 int main() 7 { 8 9 char a[20]; 10 int r; 11 int i; 12 int num; 13 char c; 14 bzero(a,20); 15 r=read(0,a,19); 16原创 2016-08-08 23:20:17 · 594 阅读 · 0 评论 -
Linux系统编程——读写锁
读写锁 (rwlock)功能特点简介:读写锁实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。这种锁相对于自旋锁而言,能提高并发性,因为在多处理器系统中,它允许同时有多个读者来访问共享资源,最大可能的读者数为实际的逻辑CPU数。写者是排他性的,一个读写锁同时只能有一个写者或多个读者(与CPU数相关),但不能同时既有读原创 2017-04-13 23:35:45 · 1392 阅读 · 0 评论 -
Linux系统编程——生产者与消费者(二)
上篇博客是用信号量实现了这个问题,这里我用条件变量来实现这个问题:/*借助条件变量模拟 生产者-消费者 问题*/#include #include #include #include /*链表作为公享数据,需被互斥量保护*/struct msg { struct msg *next; int num;};struct msg *head;struct ms原创 2017-04-12 20:52:20 · 674 阅读 · 0 评论 -
Linux系统编程——生产者与消费者问题
生产者消费者问题生产者消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区的线程--即所谓的"生产者"和"消费者"--在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同原创 2017-04-12 20:47:40 · 1967 阅读 · 0 评论 -
Linux系统编程——线程函数(三)
今天我们编写一个程序来实现线程有关的函数:主要使用了平pthread_testcancelhan函数和pthread_cancel函数,#include #include #include #include void *tfn(void *arg){ int i; i = (int)arg; //强转。 if (i == 2) { pthr原创 2017-04-02 14:56:36 · 469 阅读 · 0 评论 -
Linux系统编程——线程函数(二)
今天我们编写一个程序来实现线程有关的函数:本程序使用了下两个线程相关的函数(1)pthread_join函数(2)pthread_detach函数这两个函数的详细用法在前面的博客中介绍过了,这里就不介绍了。代码实现:#include #include #include #include #include void *tfn(void *arg)原创 2017-04-02 14:35:33 · 964 阅读 · 0 评论 -
Linux系统编程——线程函数(一)
今天我们编写一个程序来实现线程有关的函数:本程序使用了下面三个线程相关的函数(1)pthread_self函数(2)pthread_create函数(3)pthread_exit函数这三个函数的详细用法在前面的博客中介绍过了,这里就不介绍了。#include #include #include #include void *tfn(void *arg){ in原创 2017-04-02 13:50:39 · 657 阅读 · 0 评论 -
Linux系统编程——线程基础知识
线程概念什么是线程LWP:light weight process轻量级的进程,本质仍是进程(在Linux环境下)进程:独立地址空间,拥有PCB线程:也有PCB,但没有独立的地址空间(共享)区别:在于是否共享地址空间。 独居(进程);合租(线程)。Linux下: 线程:最小的执行单位 进程:最小分配资源单位,可看成是只有一个线程的进程。Linux内核线程实现原原创 2017-03-30 19:15:08 · 1420 阅读 · 0 评论 -
Linux系统编程——时态竞争
时序竞态pause函数调用该函数可以造成进程主动挂起,等待信号唤醒。调用该系统调用的进程将处于阻塞状态(主动放弃cpu)直到有信号递达将其唤醒。 int pause(void); 返回值:-1 并设置errno为EINTR返回值:① 如果信号的默认处理动作是终止进程,则进程终止,pause函数么有机会返回。② 如果信号的默认处理动作是忽略,进程继续处于挂起状态原创 2017-03-14 10:49:33 · 2025 阅读 · 0 评论 -
Linux系统编程——证明线程共享全局变量
线程中默认共享数据段,代码段等地址空间,常用的是全局变量。而进程不共享全局变量。下面写一个程序,证明线程之间是共享全局变量的。#include #include #include #include int var=100;void *tfn(void *arg){ var=200; printf("pthread\n"); return NULL;原创 2017-03-28 10:30:33 · 4558 阅读 · 2 评论 -
Linux环境变量有关函数
常见环境变量按照惯例,环境变量字符串都是name=value这样的形式,大多数name由大写字母加下划线组成,一般把name的部分叫做环境变量,value的部分则是环境变量的值。环境变量定义了进程的运行环境,一些比较重要的环境变量的含义如下:PATH可执行文件的搜索路径。ls命令也是一个程序,执行它不需要提供完整的路径名/bin/ls,然而通常我们执行当前目录下的程序a.out却需要提原创 2017-02-20 16:13:00 · 2629 阅读 · 0 评论 -
创建N个子进程
在Linux下创建N个子进程创建进程用fork()函数原型SYNOPSIS #include #include pid_t fork(void);DESCRIPTION fork() creates a new process by duplicating the calling process. The原创 2016-12-15 15:54:51 · 2500 阅读 · 1 评论 -
sctp编程实现
1. 简介 SCTP是为了在IP网上传输信令而由IETF的信令传输工作组(SIGTRAN)提出的传输层协议(RFC2960,RFC4960)。 和TCP,UDP相比, UDP是无连接的传输协议,它能满足低延迟的要求,但是它却无法保证可靠传输。TCP能保证数据可靠传输,但是它也不能完全符合信令传输的要求;TCP套接字不支持多宿性;TCP是面向比特流的,将数据传输当作是没有结构的字节序列。原创 2016-11-13 23:52:01 · 3581 阅读 · 0 评论 -
Linux下实现管道
运用管道知识做了单工通信的程序pipeA.c代码如下:#include #include #include #include int main(){char name[20]="first.pipe";char buff[256];int r;int fd;//创建管道r=mkfifo(name,0666);if(-1==r)printf("原创 2016-09-27 18:55:36 · 861 阅读 · 0 评论 -
Liunx c 下signal的使用。
signal函数可以让进程捕获注册了的信号,并用自定义的函数来设置对信号的反馈。#include #include void hand(s){if(s==2){printf("还是杀不死我!!!\n");}if(s==3)printf("我还是活得 哈哈\n");}int main(){int n=1;signal(2,hand);s原创 2016-08-14 23:22:19 · 466 阅读 · 0 评论 -
Linux下共享内存相关函数
shmctl函数原型编辑shmctl(共享内存管理)所需头文件#include #include 函数说明完成对共享内存的控制函数原型int shmctl(int shmid, int cmd, struct shmid_ds *buf)函数传入值shmid共享内存标识符cmdIPC_STAT:得到共享内存的状态,把共享内存的shmid_ds结构原创 2016-08-23 09:08:14 · 1752 阅读 · 0 评论 -
代码实现Linux ls命令
//该程序实现ls功能#include #include #include int main(int argc,char* argv[]){struct stat mes;DIR* dirp=NULL;struct dirent* dirent=NULL;//打开目录dirp=opendir(argv[1]);if(NULL==dirp){print原创 2016-08-09 22:07:47 · 2056 阅读 · 0 评论 -
Linux系统编程——管道
管道管道的概念:管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递。调用pipe系统函数即可以创建一个管道。管道有下面这些特点:1.其本质是一个伪文件(实为内核缓冲区)2.由两个文件描述符引用,一个表示读端,一个表示写端。3.规定数据从管道的写端流入,从读端流出。管道的原理:管道实为内核使用循环队列机制,借助内核缓冲区(4K)实现的。原创 2017-09-21 13:22:20 · 715 阅读 · 0 评论