我想创建一个执行txt文件中命令的c程序。我读取txt文件中的每个值并将它们放入数组中,然后我想使用fork函数逐个运行它们。谢谢您的帮助
我希望有一个慈善的帮助告诉我问题在哪里。我附上我的代码和我的数据文件的一部分。
void Execfile(char*filename)
{
char**T;
int nb;
FILE*f;
char buff[MAX_ARG];
f=fopen("data1.txt","rb");
while(fgets(buff,MAX_ARG,f)!=NULL){
T=File2TabArgv(filename,&nb);
}
fclose(f);
execvp(T[0],T);
printf("\n");
printf("END");
}
in txt.file```
sleep20
2条答案
按热度按时间8aqjt8rx1#
问题是
execvp
* 取代了当前进程 *(请参阅链接的man
页面)。至少,您希望在调用execvp
之前将fork
转换为新进程,并且在父进程中,您希望将wait
转换为新派生的子进程。您可能希望执行其他操作,例如关闭子进程从父进程继承的文件句柄。和/或其他信息。如果没有forking,文本文件中的第一个“命令”将替换您自己的执行。如果没有等待,您将不知道发生了什么。这是从POSIX C运行可执行文件的基本流程。
下面是执行
fork
/exec
的一个相当标准的习惯用法,因为它有助于查看实际代码:cgh8pdjw2#
你应该这样做一个叉子