我不确定fork是否是罪魁祸首,但这是我的程序
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
int main(){
char* a=NULL;
size_t sz_buf;
FILE* s = fopen("test.sh", "r");
while(getline(&a,&sz_buf,s)!=-1){
pid_t pid = fork();
if(pid==0){
printf("%s\n", a);
sleep(1);
exit(0);
}
int status;
wait(&status);
}
}
当我删除fork并等待相关语句时,该程序读取到文件末尾并打印每一行并退出,但是现在它正在做的是,读到文件末尾,打印每一行然后重新开始开始并继续无限地做这件事。是什么导致了这种行为?这是我的test.sh
help;pwd;pwd
pwd;help
abc;dbc;pwd