gpt4 book ai didi

c - 运行子程序,同时定期读取文件,并知道子程序何时结束

转载 作者:太空宇宙 更新时间:2023-11-04 12:57:34 24 4
gpt4 key购买 nike

我有一系列我想运行的程序,它们都在运行时更改一个文件,我们称之为 example.txt。

我正在尝试编写一个可以运行一系列程序的程序,节省每个程序所花费的时间,并在其执行期间获得 example.txt 文件的快照。我只对 example.txt 中的一行感兴趣,并且已经有了提取它的代码,这只是调用一个函数的问题。

在 Windows 中,我会使用 spawn() 系列函数,但这在 Linux 中似乎不是一个选项。我也知道如何为节目计时(开始时间 - 结束时间)。

我需要一个函数,它可以与父级同时生成子级,然后在子级完成时提供一条消息,以便父​​级可以获取系统时间。

最佳答案

将问题分解后,事情变得容易多了。

问题一:如何产卵?

问题 2:如何在收到子结束的“通知”后让父结束。

要解决问题 1,只需阅读 fork() 的文档即可

 switch ((pid = fork())) {
case -1:
/* fork() has failed */
perror("fork");
break;
case 0:
/* Processed by the child */
execv("child", my_args);
puts("execv() has failed");
exit(EXIT_FAILURE);
break;
default:
/* processed by the parent */
puts("Message from the parent");
break;
}

问题 2 通过调用 wait() 解决,准确地说是 waitpid()。以下代码只是添加到上面代码的底部。

    int status;
while(!waitpid(pid, &status, WNOHANG)) {
/* Parent does stuff while waiting for child */
}
/* Parent gets here once child has ended */

有了上面的注释,就很清楚应该把它添加到我的代码中了。我添加了评论以使其更像是一个通用的解决方案。

在 while 循环中,我从文件中读取数据,在从 while 循环中断后,我将获取结束系统时间。

关于c - 运行子程序,同时定期读取文件,并知道子程序何时结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35294793/

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