gpt4 book ai didi

c - 使用文件作为已编译的 C 程序的输入

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

在我的程序中,我有两个路径,一个是包含各种文件的目录的路径。每当我找到一个 c 文件时,我都会编译它。第二个路径是输入 txt 文件。让我们这样说:

home/dvir/workspace/assignment1/students/  -(directory)
home/dvir/workspace/tests/input1.txt/ -(input txt file)

这是我的代码的一部分:

void listdir(const char *name, int indent)
{
char path[80];
char cmd[4096 + 2*80];

DIR *dir;
struct dirent *entry;

if (!(dir = opendir(name)))
return;

while ((entry = readdir(dir)) != NULL) {
if (entry->d_type == DT_DIR) {
char path[1024];
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0)
continue;
snprintf(path, sizeof(path), "%s/%s", name, entry->d_name);
printf("%*s[%s]\n", indent, "", entry->d_name);
listdir(path, indent + 2);
} else {
printf("%*s- %s\n", indent, "", entry->d_name);
snprintf(path, sizeof(path), "%s/%s", name, entry->d_name);
snprintf(cmd, sizeof(cmd), "gcc -c %s -o %s.o", path, path);
if (system(cmd) == 0) {
printf("Compiled %s to %s.o\n", path, path);
}
}
}
closedir(dir);
}

它递归地遍历目录并编译所有文件,我将 input.txt 目录保存在字符数组中并将其称为输入。现在假设我有一个 C 程序,我编译并得到了 ashly.c.o 文件。如何使用 txt 文件作为输入来运行该程序?(以及如何实际访问该已编译的程序?)例如:假设 ashly.c.o 从用户那里获取 2 个数字并将它们相乘。我想使用 input.txt 文件作为这 2 个数字并将输出保存为新的txt文件。(以便我稍后可以阅读)我找到了一些this答案,但就我而言,我不想使用 freopen() 函数(只是打开),我需要一种从我的程序访问编译文件的方法...任何帮助将不胜感激。

最佳答案

forkexec 可以做你想做的事。

if (fork() == 0) {
int fd = open("/path/to/your/input", O_RDONLY);
dup2(fd, 0);
// execl or so
exec("/path/to/the/created.o", ...);
}

关于c - 使用文件作为已编译的 C 程序的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53706313/

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