多程序獲取樹莓派溫度
阿新 • • 發佈:2021-02-16
通過多程序獲取樹莓派溫度
在linux裡面通過呼叫ds18b20可以得到感測器溫度,通過這一理論寫出獲取樹莓派溫度的多程序程式碼。
通過這一指令可以調取溫度。我們就可以通過多程序c程式碼來實現溫度的檔案獲得,通過system函式和dup2函式對輸入進行改變,再開啟檔案io來獲取溫度
程式碼如下:
1 #include <stdio.h>
2 #include <unistd.h>
3 #include <string.h>
4 #include <errno.h>
5 #include < sys/types.h>
6 #include <sys/stat.h>
7 #include <fcntl.h>
8 #include <ctype.h>
9
10 int main(int main, char *argv[])
11 {
12 int pid = -1;
13 int fd = -1;
14 int rv = -1;
15 char buf[1024];
16 char cmd_buf[256];
17 char *interface="ds18b20" ;
18 if((fd=open("test.txt", O_RDWR|O_CREAT|O_TRUNC, 0666))<0)
19 {
20 printf("file open failure",strerror(errno));
22 pid = fork();
23 if(pid < 0)
24 {
25 printf("fork() create child process failure: %s\n", strerror(errno)) ;
26 return -1;
27 }
28 else if( pid == 0 )
29 {
30 dup2(fd, 1);
31 system("ds18b20");
32 }
33 else
34 {
35 sleep(2);
36 memset(buf, 0, sizeof(buf));
37 lseek(fd, 0, SEEK_SET);
38 rv=read(fd, buf, sizeof(buf));
39 printf("Read %d bytes data after lseek:\n %s", rv, buf);
40 }
41 return 0;
42 }
```![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20210201144148984.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTIwOTMzMQ==,size_16,color_FFFFFF,t_70#pic_center)
檔案就可獲得樹莓派溫度