我正在尝试构建一个简单的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);
}
答案 0 :(得分:2)
您的程序至少有两个问题,第一个%c
scanf()
用于单个char
,而不是字符串,您应该使用%s
代替,或者更好的是,使用fgets()
来完成这项工作。
fgets(fileName, sizeof(fileName), stdin);
第二个是您使用==
来比较字符串,if(fileName == "\\0")
永远不会是真的。 strcmp()
是您正在寻找的功能:
if (strcmp(fileName, "\\0") == 0)