嵌入式学习笔记(第九天)系统网络续
来源:互联网 发布:程序员的发展 编辑:程序博客网 时间:2024/06/07 08:49
ps -A 查看进程
execl("/usr/bin/gedit" , "gedit", "./execl.c", NULL);
参数一:执行文件的路径
参数二:要执行的文件名
参数三:文件执行时的参数
最后一个参数设置为NULL
进程的状态 :就绪状态,运行状态,阻塞状态
env 查询系统环境变量
进程间的通信:
无名管道只能用于具有亲缘关系的进程间的通信,创建无名管道的进程结束后,无名管道也被释放了
有名管道 p开头共享内存
创建一块共享内存,程序结束后仍然存在
addr = shmat(shmid, NULL, 0);
参数二:NULL让系统自动将共享内存关联到进程合适位置
参数三:0表示读写SHM_RDONLY:表示只读
没有只写
成功:返回值为共享内存的地址
失败:返回值为(void *)-1
取消关联
shmdt(addr)将数据拷贝到共享内存中
strcpy((char *)addr, pMsg);
sprintf((char*)addr, "%s", pMsg);
memcpy(addr, pMsg, strlen(pMsg));
将数据从共享内存中拷贝出来
strcpy(caMsg, (char*)addr);
sscanf((char*)addr, "%s", caMsg);
memcpy(caMsg, addr, 64);
ipcs -m 查看共享内存段
addr = mmap(NULL, 1024, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
NULL表示让系统自动映射到内存的合适位置
munmap(addr, 1024);
MAP_FAILED --> (void *)-1
文件映射
将文件的一部分内容映射到内存空间,对内存的操作,自动更新到文件中去
ipc 进程间通信
信号
./a.out & 后台运行
kill -9 进程号 终止
kill -l 查看kill
发送信号:
kill(getpid(),SIGKILL);闹钟信号:
alarm(5); //SIGALRM:结束程序
重复会将之前的闹钟取消
SIGKILL和SIGSTOP不能使用自己的处理方式来处理ctrl+c: SIGINT
设置信号的处理动作
signal(SIGINT, handle);
signal(SIGINT, SIG_IGN); SIG_IGN 忽略信号
信号的处理函数void handle(int sig)
{if (SIGINT == sig)
{
printf("catched sigint\n");
}
}
atoi 字符串转换为整型函数
线程:
pthread_create
创建线程,即创建一个并发执行的流程,该线程从属于进程,不和进程分离
进程和线程间共享所有资源
线程锁 --》互斥量
pthread_mutex_t proMutex;
pthread_mutex_lock(&proMutex);
pthread_mutex_unlock(&proMutex);
将fullsem的值加一通知所有阻塞等待fullsem的线程
sem_post(&fullsem);sem_wait(&emptysem);
检查指定信号量的值,若值大于0,则表示有资源可用,将其值减一,往下执行;若值等于0,则表示没有资源可用,则阻塞等待,直到有资源可用
联合体:是一种自定义的数据类型
union semun{
int val;
struct semid_ds *buf;unsigned short *array;
struct seminfo *__buf;
};其整体长度为联合体内最长的变量长度
- 嵌入式学习笔记(第九天)系统网络续
- 嵌入式学习笔记(第八天)系统网络编程
- 第九天学习笔记
- java学习笔记--第九天
- 黑马程序员--- 学习笔记(第九天)
- iOS-学习笔记-UI-第九天
- 黑马程序员--java学习笔记第九天
- 第九天 多线程 (续)
- 第九天:听课笔记
- 安全卫士第九天笔记
- JAVA学习 第九天(1)练习题
- 程序学习第九天
- 学习的第九天
- Java学习第九天
- C#学习第九天
- JAVA 学习第九天
- .net学习第九天
- JAVA学习第九天
- python基础--dict{}
- Java Executor 框架学习总结
- JAVA-图的广度优先遍历
- Class.isAssignableFrom与 instanceof 区别
- opencv13-#pragma comment()的使用和注意
- 嵌入式学习笔记(第九天)系统网络续
- Java基础--static关键字
- css中的浮动以及如何清除浮动
- javaWeb文档预览之OpenOfiice踩过的坑
- Guava(一)Lists与Maps
- DFS+奇偶剪枝
- 异常com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
- C语言反汇编代码(三大结构)
- 消息发送机制