gpt4 book ai didi

python - 在 Linux 中使用 system() 调用从 C 调用 Python

转载 作者:行者123 更新时间:2023-11-28 22:55:56 27 4
gpt4 key购买 nike

我在 Linux 机器内使用 system() 调用从 C 代码调用 Python 程序。假设第一次调用 Python 程序通过打开文本文件并读取第 1-10 行来读取某个文本文件的前 10 行。现在在第二次调用 Python 程序期间,我想读取接下来的 10 行 11-上次调用 Python 期间打开的相同文本文件的 20 个,无需重新打开文件并从文件的第一行开始。在第三次调用 Python 程序期间,我希望能够在不重新打开文件并从文件开头开始的情况下读取同一文本文件的接下来 10 行 21 - 30。这继续......

这是示例代码

//This is C code
...
...
int initial_line_number, final_line_number
initial_line_number = 1;
final_line_number = 10;
for(i = 1; i <= 10; i++)
{
system("python test.py initial_line_number, final_line_number"); //test.py reads a text file from initial_line number to final_line_number
initial_line_number += 10;
final_line_number +=10;
}

这能做到吗?最优雅的方法是什么?

最佳答案

不,您不能在不重新打开文件的情况下继续第二个调用。

每个 system() 调用都会运行作为参数给定的程序,并等待该进程结束。因此,您每次都会得到一个新的 child ——没有(简单的)方法可以让第二个 child 从第一个 child 停止的地方继续。

(可能有复杂的方法,您的第一个进程在后台启动一个 Python 进程,该进程读取一些行并挂起;您直接启动的进程将终止。第二个调用可能会识别出 Python 进程仍在挂起并告诉它继续。但这是一个棘手的编程 - 不值得付出努力。而且每个 system() 调用都将运行一个单独的进程并等待该进程结束,这仍然是事实。)

关于python - 在 Linux 中使用 system() 调用从 C 调用 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16197453/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com