C 语言 执行bugreport 不用system
时间: 2023-10-06 22:04:29 浏览: 68
如果您不想使用`system()`函数来执行`bugreport`命令,可以使用`popen()`函数来实现。`popen()`函数可以打开一个进程,并返回一个`FILE`类型的指针,可以用于读取该进程的输出。下面是一个使用`popen()`函数执行`bugreport`命令的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define BUFFER_SIZE 1024
int main()
{
char buffer[BUFFER_SIZE];
FILE *fp = popen("bugreport", "r"); // 打开bugreport进程,并返回一个指向该进程的FILE指针
if (fp == NULL) {
printf("打开bugreport进程失败!\n");
return 1;
}
FILE *out = fopen("/sdcard/bugreport.log", "w"); // 打开输出文件
if (out == NULL) {
printf("打开输出文件失败!\n");
pclose(fp);
return 1;
}
while (fgets(buffer, BUFFER_SIZE, fp) != NULL) { // 读取bugreport进程的输出,并写入到输出文件中
fputs(buffer, out);
}
pclose(fp); // 关闭bugreport进程
fclose(out); // 关闭输出文件
printf("执行bugreport命令成功!\n");
return 0;
}
```
以上代码中,`popen("bugreport", "r")`会打开`bugreport`进程,并返回一个指向该进程的`FILE`指针。然后,使用`fgets()`函数读取该进程的输出,并将输出写入到输出文件中。最后,使用`pclose()`函数关闭该进程,关闭输出文件,输出“执行bugreport命令成功!”。
需要注意的是,使用`popen()`函数执行`bugreport`命令同样需要在Android系统中获取root权限。如果没有root权限,将无法执行该命令。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)