gpt4 book ai didi

c - 重复错误: lvalue required as left operand of assignment

转载 作者:行者123 更新时间:2023-11-30 15:24:18 25 4
gpt4 key购买 nike

dup 的文档表示在新文件描述符中或错误 -1 时返回值。

我收到此错误,我真的不知道为什么:

mav@mav-MS-7592:~/FRI/OSIZPIZ$ gcc pipe.c  -o pipe
pipe.c: In function ‘main’:
pipe.c:26:16: error: lvalue required as left operand of assignment
STDIN_FILENO = dup(fd[0]);

这是我的代码:

int main(int argc, char* argv[]){
//fd[0] - reading
//fd[1] - writing
int fd[2];
pid_t childpid;

if(pipe(fd) == -1) errexit("pipe");

//child 0
//parent PID
if((childpid = fork()) == -1) errexit("fork");

if(childpid == 0){
close(fd[1]);
STDIN_FILENO = dup(fd[0]);
}else{
close(fd[0]);
STDOUT_FILENO = dup(fd[1]);
}

return 0;
}

我知道,我可以使用 dup2(fd[0], STDIN_FILENO); 来避免这种情况但我只想使用 dup...

提前致谢!

最佳答案

STDIN_FILENOconstant defined in unistd.h :

The following symbolic constants are defined for file streams:

STDIN_FILENO File number of stdin. It is 0. STDOUT_FILENO File number of stdout. It is 1. STDERR_FILENO File number of stderr. It is 2.

由于它是一个常量,因此您不能重新分配它们。

关于c - 重复错误: lvalue required as left operand of assignment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28479641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com