使用fork时,getline重新启动以从文件中读取

时间:2017-11-22 10:53:14

标签: c fork getline

我不确定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

0 个答案:

没有答案