首页 > 解决方案 > 将 C 和 python 与 Bash 相结合

问题描述

我在 C 中有以下代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    int i;
    double x;
    double pi;
    pi = M_PI;
    double increment;
    FILE * fp;

    fp = fopen ("FILE","w");
    x = 0;
    increment = 4* pi / 500;

    for (i = 0; i<=500; i++)
    {
        x = i * increment;
        printf("i: %d, tan(x): %f\n", i, tanf(x));
        fprintf (fp, "%d, %f\n",i, tanf(x));

    }
    fclose (fp);
    exit(0);
}

以及以下 Python 代码:

import matplotlib.pyplot as plt
import os


f = open("FILE", "r")
lines=f.readlines()
first =[]
second=[]
for x in lines:
    first.append(int(x.split(', ')[0]))
    second.append(float(x.split(', ')[1]))
f.close()

plt.plot(first, second)
plt.show()

os.remove("FILE")

C 代码生成保存在文本文件中的数据。python 代码读取该文本文件并绘制图形。绘制绘图后,python 删除数据文件。

我需要制作一个执行两段代码的 bash 文件,就像一种胶水一样。我已经阅读了有关 bash 的教程,但我仍然不清楚如何编译和执行 C 以及运行 python。

问题:如何制作一个在 linux 中运行两段代码的 bash 文件?

标签: linuxbash

解决方案


一旦您的 C 程序被编译成可执行文件(二进制文件),这非常简单。假设您的 C 程序生成可执行文件table,并且您的 python 脚本被调用plot.py

#!/bin/bash
./table && python plot.py

这将按顺序运行这两个程序。这&&意味着第二个程序只有在第一个程序成功完成时才会运行(退出代码 == 0)。

PS:如果您仍然需要编译 C 代码,请使用gcc filename.c -lm. 这-lm将确保tanf定义的数学库是链接的。


推荐阅读