[英]use file as an input to a compiled c program
在我的程序中,我有2條路徑,一個是包含各種文件的目錄的路徑。 每當我找到ac文件時,我都會對其進行編譯。 第二個路徑是輸入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目錄保存在char數組中,並將其稱為輸入。 現在假設我編譯了一個具有ac程序並獲得ashly.co文件。 例如,我如何才能使用txt文件作為輸入來運行該程序?(以及實際上如何訪問該已編譯程序?):假設ashly.co從用戶那里得到2個數字並將它們乘以。 我想用input.txt的文件將成為這些兩個數輸出保存為一個新的txt文件。(這樣我就可以讀它后)我已經找到了一些這樣的答案,但在我的情況,我不希望使用freopen()函數(剛剛打開),我需要一種方法來從程序訪問已編譯的文件...任何幫助將不勝感激。
fork
和exec
可能會做您想要的。
if (fork() == 0) {
int fd = open("/path/to/your/input", O_RDONLY);
dup2(fd, 0);
// execl or so
exec("/path/to/the/created.o", ...);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.