优化以下代码:int main(int argc, char* argv[]) { sleep(8); system("echo 'connect 84:26:7A:42:85:4B' | bluetoothctl"); //Report_Exc *report_exec; key_t report_key; int shm_id_report; uint8_t *report_buf; //获取key if((report_key = ftok("/home/linjunhan/dolphin/report",0xe)) < 0) perror("ftok"); //创建或获取共享内存 if((shm_id_report = shmget(report_key,SHMSIZE,IPC_CREAT|0666)) < 0) perror("shmget"); //映射共享内存到进程的虚拟空间 if((report_buf = shmat(shm_id_report,NULL,0)) < 0) perror("shmat"); while(1){ if( ((Report_Exc *)report_buf)->elec == 1){ system("sudo espeak -v zh+f2 '电量不足,请及时充电' -s 220"); } sleep(5); if( ((Report_Exc *)report_buf)->leak == 1){ system("sudo espeak -v zh+f2 '漏水啦,漏水啦' -s 220"); } sleep(5); } }
时间: 2023-05-18 09:03:09 浏览: 153
代码优化 有效使用内存
以下是优化后的代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdint.h>
#define SHMSIZE 1024
typedef struct {
int elec;
int leak;
} Report_Exc;
int main(int argc, char* argv[]) {
sleep(8);
system("echo 'connect 84:26:7A:42:85:4B' | bluetoothctl");
key_t report_key;
int shm_id_report;
uint8_t *report_buf;
if ((report_key = ftok("/home/linjunhan/dolphin/report", 0xe)) < 0) {
perror("ftok");
exit(1);
}
if ((shm_id_report = shmget(report_key, SHMSIZE, IPC_CREAT | 0666)) < 0) {
perror("shmget");
exit(1);
}
if ((report_buf = shmat(shm_id_report, NULL, 0)) < 0) {
perror("shmat");
exit(1);
}
while (1) {
if (((Report_Exc *)report_buf)->elec == 1) {
system("sudo espeak -v zh f2 '电量不足,请及时充电' -s 220");
}
sleep(5);
if (((Report_Exc *)report_buf)->leak == 1) {
system("sudo espeak -v zh f2 '漏水啦,漏水啦' -s 220");
}
sleep(5);
}
return 0;
}
阅读全文