char command[] = "/usr/bin/sn_core.elf getstat 2>/dev/null"; 该指令打印出来的是 Status:WR mode : WRC_SLAVE_WR1 wr0 -> lnk:0 rx:0 tx:5248 lock:1 wr1 -> lnk:1 rx:2320 tx:663 lock:1 syncs:wr1 sv:1 ss:'TRACK_PHASE' aux:0 sec:704 nsec:196419888 mu:869688 dms:430074 dtxm:240682 drxm:191022 dtxs:241345 drxs:182145 asym:9540 crtt:14494 cko:-6 setp:4146 hd:57906 md:33261 ad:65000 ucnt:606 temp: 47.187 C Time: Thu, Jan 1, 1970, 00:11:44 +581216944 nanoseconds. 该代码fp = popen(command, "r"); if(fp == NULL){ printf("Error running command.\n"); exit(1); } while (fgets(line, MAX_LINE_LENGTH, fp) != NULL) { printf("%s\n",line); mode_str = strstr(line,"mode : ") + strlen("mode : "); if(!mode_str){ printf("WR mode not fount\n"); exit(1); }只打印出来Status:WR mode : WRC_SLAVE_WR1 后面的内容都没有打印出来
时间: 2024-02-14 14:13:03 浏览: 86
这段代码只打印了状态信息的第一行:"Status:WR mode : WRC_SLAVE_WR1"。如果想要打印出所有的状态信息,可以在while循环中添加更多的打印语句,例如:
```
while (fgets(line, MAX_LINE_LENGTH, fp) != NULL) {
printf("%s", line); // 打印当前行的信息
if (strstr(line, "wr0")) {
// 打印wr0的信息
printf("wr0 -> %s", line + 6); // 从第6个字符开始打印
} else if (strstr(line, "wr1")) {
// 打印wr1的信息
printf("wr1 -> %s", line + 6); // 从第6个字符开始打印
} else if (strstr(line, "temp")) {
// 打印温度信息
printf("Temperature: %s", line + 6); // 从第6个字符开始打印
} else if (strstr(line, "Time")) {
// 打印时间信息
printf("Time: %s", line + 6); // 从第6个字符开始打印
}
}
```
这样就可以打印出所有的状态信息了。
相关问题
char command[] = "/usr/bin/sn_core.elf getstat 2>/dev/null"; 打印这个数组
好的,您可以使用下面的代码打印这个字符数组:
```c
#include <stdio.h>
int main() {
char command[] = "/usr/bin/sn_core.elf getstat 2>/dev/null";
printf("Command: %s", command);
return 0;
}
```
在上面的代码中,我们定义了一个字符数组 `command`,并初始化为 `"/usr/bin/sn_core.elf getstat 2>/dev/null"`,然后使用 `printf` 函数打印数组的值。输出结果如下:
```
Command: /usr/bin/sn_core.elf getstat 2>/dev/null
```
char command[] = "/usr/bin/sn_core.elf getstat 2>/dev/null";fp = popen(command, "r");warning: assignment makes pointer from integer without a cast
这个 warning 的原因是因为 `fp` 变量的类型是一个指针类型,但是 `popen` 函数返回的值并没有被强制转换成指针类型。这可能会导致程序运行时的错误,因为你试图将一个整数解释为指针类型,但是这个整数并没有被正确地初始化为指针变量。你可以通过将返回值强制转换成指针类型来解决这个问题,例如:
```
fp = (FILE *)popen(command, "r");
```
这样就可以消除这个 warning 了。
阅读全文