接收标准输入并调用在 linux 中打开常规文件

receiving stdin with a call to open a regular file in linux

我有一个程序可以用 sys_open() 打开一个静态文件,并希望接收一个等于零的文件描述符 (=stdin)。我有能力写入文件,删除它或修改它,所以我尝试从静态文件名创建一个符号 link 到 /dev/stdin。它打开 stdin,但 returns 具有最低的可用 fd(不等于零)。如何在不挂钩系统调用或修改程序本身的情况下使系统调用为 return 零?有可能吗?

(这是挑战的一部分,不是真实案例场景)

一如既往的感谢

Posix guarantees 将返回最低的可用 FD。因此,您可以在关闭标准输入的情况下调用程序:

./myprogram 0>&-