程序在分叉之前不会终止

时间:2014-03-02 15:06:58

标签: c

我正在尝试构建一个简单的C程序,它基本上要求读取文件名或\0来终止程序。

我的问题是当我输入\0它没有终止时,而是继续创建fork并执行另一个c程序作为孩子,任何想法为什么?

int main (void)
{
    printf("%d: Parent process ...\n",getpid());
    char fileName[200];

    printf ("%d: Enter an argument (or \\0 for none): ", getpid());
    fflush(stdout);
    scanf("%c", &fileName);

    if(fileName == "\\0"){
        exit(0);
    }

    int pid;
    pid = fork();

    if (pid == 0) {
        printf("%d child\n",getpid());
        execl ("./catter","catter", fileName,NULL);
    }
    sleep(6);
}

1 个答案:

答案 0 :(得分:2)

您的程序至少有两个问题,第一个%c scanf()用于单个char,而不是字符串,您应该使用%s代替,或者更好的是,使用fgets()来完成这项工作。

fgets(fileName, sizeof(fileName), stdin);

第二个是您使用==来比较字符串,if(fileName == "\\0")永远不会是真的。 strcmp()是您正在寻找的功能:

if (strcmp(fileName, "\\0") == 0)