Linux
文章平均质量分 80
六花不会哭T﹏T
嵌入式小白
展开
-
Linux之线程操作
与线程有关的api非常多,主要分为3类。分别是,普通线程、互斥锁、条件。原创 2023-11-11 22:18:54 · 51 阅读 · 1 评论 -
Linux进程通讯之共享内存
shmget()函数用来获取key的值,size是共享内存的大小,一般以兆为单位,shmflg是标志位。shamt()函数是映射函数,用来映射共享内存的地址,shmid是key的id号,shmadder是地址。shmat()函数是用来挂载内存的,shmctl函数是用来销毁共享内存。这是发送方的代码,我们用到fotk()函数,这个函数用来计算key的值,第一个参数是文件路径,第二个参数是类型。shmget()函数的第一个参数是key的值,第二个参数给了4兆,然后就是标识符,IP_CREAT权限是0600。原创 2023-11-09 17:31:24 · 57 阅读 · 1 评论 -
Linux进程通讯之消息队列
消息队列常用的几个API就这几个,key是队列号,msgflg是标志位,msgid是msgget()函数的id号,msgsz是数据大小,msgtyp是队列类型。msgsnd()函数用来发送信息,msgid是队列号,&sendbuf是取发送数组的地址,地址后面是发送数据的大小,0代表标志位默认选择。这是发送方的代码,先是定义一个sendbuf的结构体,666是队列的类型,this is senddata是发送的数据。这是接收方的代码,改了消息队列号,设置了一个结构体数组,还加了一个msgsnd()函数。原创 2023-11-08 23:50:07 · 47 阅读 · 1 评论 -
Linux进程通讯之无名管道和命名管道
无名管道主要用在父子进程直接进行通讯,但是只能父发子收或者父收子发,发送和接收不能同时进行。管道的函数是pipe()函数,除此之外还定义了一个fd[2]的数组。这个数组的用处在于是否要进行读写。fd[1]代表写,fd[0]代表读,之前说过,无名管道不能同时收发。所以,当我们进行写的操作时,要把读给关闭,也就是close(fd[0]),读操作就相反。代码刚开始先调用pipe()函数创建一个管道,然后创建一个进程,用pid来接收进程id。如果pid大于0,说明进入了父进程。原创 2023-11-08 22:28:07 · 49 阅读 · 1 评论