首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用C popen():read()起作用,但fread()不起作用

使用C语言中的popen()函数可以创建一个管道,并执行一个shell命令。popen()函数返回一个文件指针,可以用于读取命令的输出。而fread()函数则是用于从文件中读取数据的。

在使用popen()函数时,可以通过传入"r"参数来创建一个只读的管道。然后可以使用read()函数来读取命令的输出。read()函数会将输出内容读取到一个缓冲区中,并返回读取的字节数。可以通过循环读取的方式,将所有的输出内容读取完毕。

示例代码如下:

代码语言:txt
复制
#include <stdio.h>

int main() {
    FILE *fp;
    char buffer[1024];

    fp = popen("ls", "r");
    if (fp == NULL) {
        printf("Failed to run command\n");
        return 1;
    }

    while (fgets(buffer, sizeof(buffer), fp) != NULL) {
        printf("%s", buffer);
    }

    pclose(fp);

    return 0;
}

上述代码中,使用popen()函数执行了一个"ls"命令,并将输出内容打印到屏幕上。

而fread()函数则是用于从文件中读取数据的。它的使用方式如下:

代码语言:txt
复制
#include <stdio.h>

int main() {
    FILE *fp;
    char buffer[1024];

    fp = fopen("file.txt", "r");
    if (fp == NULL) {
        printf("Failed to open file\n");
        return 1;
    }

    fread(buffer, sizeof(char), sizeof(buffer), fp);
    printf("%s", buffer);

    fclose(fp);

    return 0;
}

上述代码中,使用fopen()函数打开了一个名为"file.txt"的文件,并使用fread()函数将文件中的内容读取到缓冲区中,并打印到屏幕上。

综上所述,使用C语言中的popen()函数可以执行shell命令并读取输出,而fread()函数则是用于从文件中读取数据的。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券