我知道dup、dup2、dup3会“创建文件描述符oldfd的副本”(摘自man页面)。但是我无法理解。 据我所知,文件描述符只是用于跟踪文件位置和方向(输入/输出)的数字。直接复制它们不是更容易吗?fd=fd2; 每当我们想要复制文件描述符时? 还有一些其他的事情... dup(...
这篇关于 dup2 系统调用的手册页面表示: EBUSY(仅适用于Linux)在open(2)和dup()的竞态条件下,dup2()或dup3()可能会返回该错误。 它所说的竞态条件是什么?如果 dup2 返回EBUSY 错误,我该怎么办?是否应像处理 EINTR 的情况一样重试?
这是一个关于此问题的后续提问,特别涉及其回答。 我正在调用一个Hello World可执行文件(executable),它仅将Hello World打印到标准输出(stdout)。我想重定向该输出到Python的StringIO,并发现这个答案几乎让我实现了解决方案。 这个答案的关键部...
我发布我的代码只是为了让问题更加清晰明了。我并不是在寻求你的帮助来修复它,我更想理解dup2系统调用,但我从手册和其他stackoverflow问题中并没有完全掌握它。 pid = fork(); if(pid == 0) { if(strcmp("STDO...
我在手册中查过,但仍然不理解... 举个例子,假设你有dup2(f1,0)。那么它会将文件描述符1和标准输入stdin交换,然后锁定stdin吗?