gpt4 book ai didi

c - 有没有办法在C中同时运行两个程序并记录输出

转载 作者:行者123 更新时间:2023-11-30 14:37:30 24 4
gpt4 key购买 nike

我有两个 C 程序几乎相同(略有不同),并且我在另一个 C 文件中有(键/值)字典

两个程序均已完成以下步骤

编译第一个程序

gcc file1.c dict.c

编译第二个程序

gcc file2.c dict.c

在 file.c 中,我调用了两个函数 update(填充字典)和 printDic(打印字典的内容)

//file1.c
int func(int w){
update("w",w)
if ((w >= w) && ((w % w) == 0))
{
w= w*4
update("w",w)
printDic();
}
else
{
w=1;
update("w",w)
printDic();
}
return 0; }

//file2.c
int func(int w){
update("w",w)
if ((w >= 4) && ((w / w) == 0))
{
w = w/2;
update("w",w)
printDic();

}
else
{
w=0;
update("w",w)
printDic();
}
return 0; }

并且两个文件具有相同的主文件

//main
int main(int argc, char *argv[]){
func(10);
func(5);
func(2);
func(0);
func(180);

return 0; }

因此,一旦 w 的值发生变化,update() 就会用它们填充字典,然后打印它们。

有没有办法同时使用字典运行这两个文件,以便比较输出,例如如果我在两个程序中都传递 10,则最终会得到不同的 w 值(存储在字典中)。

注意:我需要多次调用 func,并且在同一个文件中我不想每次只调用一次来运行程序。

字典对于一个文件运行得很好,并且在每次调用 func 时,w 的值都会附加到 txt 文件。

最佳答案

您可以使用线程来实现您的目标,例如:

#include "pthread.h"                                                                                    
#include <stdio.h>

#define bool int
#define true 1
#define false 0
#define thread pthread_t
#define thread_fire pthread_create
#define thread_wait pthread_exit

int get_mul(int num, bool even)
{
if (even)
return (2 * num);
else
return ((2 * num) + 1);
}

void* func_odd(void *arg)
{
int num = *((int *)arg);
printf("%s: [%d]\n", __func__, get_mul(num, false));

return NULL;
}

void* func_even(void *arg)
{
int num = *((int *)arg);
printf("%s: [%d]\n", __func__, get_mul(num, true));

return NULL;
}

void func(int num)
{
thread tid;
thread_fire(&tid, NULL, func_odd, (void *)&num);
thread_fire(&tid, NULL, func_even, (void *)&num);
thread_wait(NULL);
}

int main(int argc, char **argv)
{
int i, num = atoi(argv[1]);

func(num);

return 0;
}

**compiling:**
gcc -g -c thread.c
gcc -o thread thread.o -lpthread

**Output:**
./thread 3
func_odd: [7]
func_even: [6]

在上面的示例中,将 func_odd() 和 func_even() 替换为在两个不同文件中定义的两个函数(具有相同名称)。

例如,您可以将“func_odd”调用为“func_file1”,将“fund_even”调用为“func_file2”。

多线程的力量!!!

关于c - 有没有办法在C中同时运行两个程序并记录输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57275997/

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