IF语句中的语句如何工作?

Arm*_*bal 0 c linux ipc pipe

我刚刚在进程间通信中开始编程教育,这段代码是在父进程代码部分编写的.根据我所读到的内容write(),-1如果失败则返回,0如果没有写入,则返回,如果成功则返回pipe()正整数.究竟是如何sizeof(value)帮助我们识别出来的?不是if(write(request[WRITE],&value,sizeof(value) < 1)一个更友好的阅读替代什么的sizeof(value).

if(sizeof(value)!=write(request[WRITE],&value,sizeof(value)))
{
     perror("Cannot write thru pipe.\n");
     return 1;
}
Run Code Online (Sandbox Code Playgroud)

代码说明:变量value是父进程中数字的输入,然后父进程通过子管发送给子进程,子进程对其进行一些算术运算.

任何有关该主题的澄清的帮助都非常适用.

编辑:在提问时如何突出显示我的系统功能?

unw*_*ind 5

这也捕获了成功但部分写入,应用程序想要将其视为失败.

如果没有毫无意义的表现,它会更容易阅读:

if(write(request[WRITE], &value, sizeof value) != sizeof value)
Run Code Online (Sandbox Code Playgroud)

因此,例如,如果value是a int,它可能占用4个字节,但如果write()只写了其中2个,它将返回2由此测试捕获的.

最起码,我是这么想的.请记住,这sizeof不是一个功能.