我正在尝试制作一个程序,它获取 2 个文件路径到 main,并调用 linux 的 cmp 命令来比较它们。
如果它们相等,我想返回 2,如果它们不同,则返回 1。
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(int argc, const char* argv[])
{
pid_t pid;
int stat;
//child process
if ((pid=fork())==0)
{
execl("/usr/bin/cmp", "/usr/bin/cmp", "-s",argv[1], argv[2], NULL);
}
//parent process
else
{
WEXITSTATUS(stat);
if(stat==0)
return 2;
else if(stat==1)
return 1; //never reach here
}
printf("%d\n",stat);
return 0;
}
出于某种原因,如果文件相同,我确实成功返回 2,但如果它们不同,则不会进入 if(stat==1),而是返回 0。为什么会发生这种情况?我通过终端检查了文件上的 cmp 是否确实返回 1 如果它们不同,那么为什么这不起作用?