C 可以创建函数返回零和什么';这是什么意思?

C 可以创建函数返回零和什么';这是什么意思?,c,linux,C,Linux,我目前正在Linux中使用一段遗留代码,遇到一段代码,它使用fcntl.h头中的create函数创建新文件或重写现有文件。此代码假定返回值低于零作为一个错误,高于零作为有效的文件描述符,没有考虑零。p> 零是否为有效的文件描述符并指示函数调用是否成功?说: 成功完成后,函数应打开文件并返回一个非负整数,表示编号最少的未使用文件描述符。否则,应返回-1,并设置errno以指示错误 是,零是一个有效的文件描述符。它通常是stdin,但是如果您首先关闭(0),然后调用创建(…),内核将为创建的文件重用

我目前正在Linux中使用一段遗留代码,遇到一段代码,它使用
fcntl.h
头中的
create
函数创建新文件或重写现有文件。此代码假定返回值低于零作为一个错误,高于零作为有效的文件描述符,没有考虑零。p> 零是否为有效的文件描述符并指示函数调用是否成功?说:

成功完成后,函数应打开文件并返回一个非负整数,表示编号最少的未使用文件描述符。否则,应返回-1,并设置errno以指示错误


是,零是一个有效的文件描述符。它通常是stdin,但是如果您首先
关闭(0)
,然后调用
创建(…)
,内核将为创建的文件重用文件描述符编号0


<>如果你看的代码不考虑这个,它可能是一个bug。即使您的可执行文件从未关闭fd 0本身,在代码开始运行之前文件描述符0已经关闭的环境中,它也会失败。在bashshell中,您可以使用
/myprogram 0触发此操作。是的,零是一个有效的文件描述符。它通常是stdin,但是如果您首先
关闭(0)
,然后调用
创建(…)
,内核将为创建的文件重用文件描述符编号0

<>如果你看的代码不考虑这个,它可能是一个bug。即使您的可执行文件从未关闭fd 0本身,在代码开始运行之前文件描述符0已经关闭的环境中,它也会失败。在bashshell中,您可以使用
/myprogram 0“Non-negative”包含0来触发它,所以这是有效的。“Non-negative”包含0,所以这是有效的。