c代码和python的进程间通信

问题描述

我正在尝试在图表上实时绘制与 cpu 使用率和内存使用率相关的数据。我正在使用 c 代码读取数据并使用管道将其传输到 python 脚本。现在我希望能够直接从 C 程序执行 python 脚本,因为我试图在 C 中创建一个控制台应用程序。但是我的程序卡在我运行 python 脚本的语句中,因为脚本正在等待 C以写入模式从另一端打开管道的代码。请提出一种解决此问题的方法。无论我从哪一端尝试访问管道,代码都会卡住,等待其他程序以读/写模式打开它。

注意:在我的情况下,两种语言的使用都是强制性的,因此程序的结构将保持不变,即 C 将数据写入管道,python 将读取它以在图形上绘图

int writepipe(long long a,char pipename[])
{
    int fd;
    //0777 means this file can be read and be edited by anyone
    if(mkfifo(pipename,0777)==-1) //returns -1 when an error occurs
    {
        if(errno != EEXIST)
        {
            printf("Could not create FIFO file.\n");
            return -1;
        }
    }
    
    if(strcmp(pipename,"pipe/cpu_pipe")==0)
    {
        system("python3 cpu_graph.py");
    }
    else
    {
        system("python3 mem_graph.py");

    }


    printf("opening...\n");
    fd = open(pipename,O_WRONLY);
    printf("Opened\n");
    char b[2];
    sprintf(b,"%lld",a);
    char *x;
    x=b;
    


    //printf("Writing...\n");
    if(write(fd,x,sizeof(b)) == -1)
    {
        printf("Write error\n");
        return 1;
    }
    
    close(fd);
    
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...