In file included from onvif_demo1.c:1: /usr/include/stdio.h:806:26: note: expected ‘FILE *’ {aka ‘struct _IO_FILE *’} but argument is of type ‘int’ 806 | extern int pclose (FILE *__stream); | ~~~~~~^~~~~~~~
时间: 2023-10-22 07:06:39 浏览: 79
onvif_src.rar_ONVIF_https://hhadu.com/_nvr onvif_onvif rtsp_rtsp
5星 · 资源好评率100%
这个错误提示表明在您的代码中,您使用了`pclose`函数,但是您给函数传递了一个`int`类型的参数,而不是期望的`FILE*`类型。
`pclose`函数是用于关闭由`popen`函数打开的进程,并返回进程的终止状态。它需要一个`FILE*`类型的参数,该参数是由`popen`函数返回的进程管道。
要解决这个问题,您需要确保在调用`pclose`函数之前,您先调用了`popen`函数来打开进程并返回一个`FILE*`类型的指针。然后,将该指针作为参数传递给`pclose`函数。
例如,以下是一个示例代码,展示了如何正确使用`popen`和`pclose`函数:
```c
#include <stdio.h>
int main() {
FILE *pipe;
char command[] = "ls -l";
char buffer[128];
// 打开进程管道
pipe = popen(command, "r");
if (pipe == NULL) {
perror("popen");
return 1;
}
// 读取进程输出
while (fgets(buffer, sizeof(buffer), pipe) != NULL) {
printf("%s", buffer);
}
// 关闭进程管道
int status = pclose(pipe);
if (status == -1) {
perror("pclose");
return 1;
}
return 0;
}
```
在这个示例中,我们使用`popen`函数打开了一个进程管道,执行了`ls -l`命令,并读取了进程的输出。然后,我们使用`pclose`函数关闭进程管道,并检查了函数的返回值。
请确保在您的代码中,对`pclose`函数的调用是在先调用`popen`函数后的正确位置,并且参数类型匹配。
希望这可以解决您的问题!如果您有任何其他疑问,请随时提问。
阅读全文