linux545454545-030

示例如下

运行结果

使用daemon 创建守护进程

使用‘daemon()’创建守护进程

示例

信号函数sigaction的使用

在Ubuntu中,pthread库默认不存在,须进行安装

sudo apt install -y glibc-doc manpages-posix-dev

安装完成后可查看pthread使用手册man pthreads

 

使用vim pthread_create.c来编辑代码创建或终止线程

#include <pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);

返回值:

成功返回0 失败返回错误号;

pthread_exit()为终止线程

创建进程与终止进程的示例如下

 

编辑完成后可使用makefile来对其进行编译
使用vim makefile来编辑makefile如下

'gcc wenjianming.c -o wenjianming.out'

运行结果如下

 

线程的连接与分离

线程的连接

int pthread_join(pthread_t thread, void **retval);

参数1:thread表示等待的子线程的线程id; 参数2:retval用来接收返回结果, 成功返回0 失败返回错误号;

线程的分离

‘int pthread_detach(pthread_t thread);’

thread表示分离的子线程的线程id; 成功返回0 失败返回错误号

线程的连接与分离示例

                 

使用互斥量保护多线程同时输出

初始化互斥锁

int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutex_attr_t *mutexattr);

mutex表示的是互斥锁的标号; mutexattr表示的互斥锁的属性,一般情况使用NULL,表示缺省属性。 成功返回0 失败返回错误号

在访问临界资源前,需要上锁

‘int pthread_mutex_lock(pthread_mutex_t *mutex);’

在访问临界资源结束,需要解锁

'int pthread_mutex_unlock(pthread_mutex_t *mutex);'

互斥锁示例如下

运行结果如下

条件变量

条件变量是利用线程共享的全局变量进行同步的一种机制,只要包括两个动作:一个线程等待某个条件为真,而将自己挂起(进入等待队列);另一个线程的条件成立,并通知等待队列中的线程继续。为了防止竞争,条件变量总是和一个互斥锁结合在一起使用

示例如下

进程

进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。

测试获取环境变量代码

通过main() 函数的第三个参数获取

通过environ全局变量获取

测试创建进程程序代码

fork()函数创建进程。

#include <unistd.h>
pid_t fork(void);

示例如下

示例如下

运行结果

使用daemon 创建守护进程

守护进程是脱离于终端并且在后台运行,周期性的执行某种任务或者等待处理某些发生的事件进程。

使用‘daemon()’创建守护进程

示例

信号函数sigaction的使用

示例

但因为没有信号发生所以运行结果如下图

开发板

虚拟开发板准备完毕后使用

~/ubuntu-18.04_imx6ul_qemu_system/gui-qemu-imx6ull-gui.sh

打开开发板

LCD屏幕/图像

使用fb-test打开屏幕,./myfb-test /dev/fb0打开图像

串口 EEPROM

列出所有串口cd ~;i2cdetect -l && i2cdetect -y 0

写入i2c_usr_test /dev/i2c-0 0x50 w 0x01 0xff

读取$ i2c_usr_test /dev/i2c-0 0x50 w 0x33

命令控制LED

打开LED控制以及安装LED驱动

cd ~
cd led_driver_qemu/
insmod 100ask_led.ko

控制LED零号灯亮,LED一号灯灭:

./ledtest /dev/100ask_led0 on
./ledtest /dev/100ask_led1 off

控制LED零号灯亮,LED一号灯灭:

./ledtest /dev/100ask_led0 on
./ledtest /dev/100ask_led1 off

按键控制LED

启动按键控制

cd ~
cd button_driver_qemu/
insmod button_drv.ko 
insmod board_100ask_qemu_imx6ull.ko 
./button_led_test

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值