用c写一段代码 调用该指令usr/bin/sn_core.elf getstat 2>/dev/null 此指令输出的内容有6行 此内容是Status:WR mode : WRC_SLAVE_WR1 wr0 -> lnk:0 rx:0 tx:14494 lock:1 wr1 -> lnk:1 rx:20301 tx:5779 lock:1 syncs:wr1 sv:1 ss:'TRACK_PHASE' aux:0 sec:5892 nsec:118726784 mu:867139 dms:422756 dtxm:238106 drxm:197332 dtxs:241345 drxs:178945 asym:21627 crtt:11411 cko:-1 setp:13000 hd:57891 md:31729 ad:65000 ucnt:5407 temp: 48.687 C Time: Thu, Jan 1, 1970, 01:38:13 +43337456 nanoseconds. 等将输出内容全部储存到一个数组中时 再对这个数组里的内容进行操作
时间: 2023-08-04 13:04:37 浏览: 77
解决-BASH: /HOME/JAVA/JDK1.8.0_221/BIN/JAVA: 权限不够问题
以下是调用该指令并将输出内容存储到数组中的C代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_OUTPUT_SIZE 1024
#define MAX_LINES 6
int main() {
char output[MAX_OUTPUT_SIZE];
char command[] = "/usr/bin/sn_core.elf getstat 2>/dev/null";
FILE *fp = popen(command, "r");
if (fp == NULL) {
printf("Failed to execute command.\n");
exit(1);
}
char *lines[MAX_LINES];
int i = 0;
while (fgets(output, MAX_OUTPUT_SIZE, fp) != NULL && i < MAX_LINES) {
lines[i] = strdup(output); // 将每行输出存储到指针数组中
i++;
}
pclose(fp);
// 对指针数组 lines 中的每行内容进行操作
// ...
// 释放指针数组中每行内容的内存
for (i = 0; i < MAX_LINES; i++) {
free(lines[i]);
}
return 0;
}
```
以上代码中,我们使用了 popen 函数来执行命令并获取输出。由于输出内容有6行,我们定义了一个指针数组 lines 来存储每行内容。在 while 循环中,我们使用 fgets 函数获取每行输出,并使用 strdup 函数将其存储到指针数组中。最后我们可以在后面对指针数组中的每行内容进行操作,并释放每行内容的内存。
阅读全文