c - 如何使用 fcntl 和 F_GETOWN 知道我们是否收到错误或组 ID?
问题描述
以下是fcntl
用于操作文件描述符的语法:
val = fcntl(fd, F_GETOWN, 0)
在文档中提到此命令返回正进程 ID 或负进程组 ID。
并且还提到了值-1
意味着发生了错误。
如何确定函数是否有错误或返回组 ID 的负值?
解决方案
-1 是一个错误。其他负值是进程组 ID。引用此函数的 Single UNIX 规范(强调我的):
F_GETOWN
如果fildes 引用套接字,则获取指定的进程 ID 或进程组 ID,以便在带外数据可用时接收 SIGURG 信号。正值应表示进程 ID;-1 以外的负值应指示进程组 ID;零值应指示不发送 SIGURG 信号。如果fildes不引用套接字,则结果未指定。
请记住,-1 的进程组 ID 无论如何都没有多大意义。这意味着 pid 1(即init
)是进程组的领导者。这在任何正常系统中都是不可能的,并且会产生不良影响。
推荐阅读
- python - 如何从 python 中的嵌套 YAML 文件中读取数据?
- javascript - 如何从下拉选项列表中去除 HTML 标签?
- json - 如何在不嵌入的情况下将 JSON 解组添加到外部库类型
- c# - 有没有办法以编程方式在 Windows 中获取文本大小比?
- c# - 在 .NET Framework 中将对象转换为 XML
- ios - Stripe iOS SDK - 发送不兼容的块指针类型
- python - requests.post 与 curl -XPOST
- javascript - OpenCart 3 - PayPal Express - 付款:功能 - 添加额外的自定义功能
- ruby-on-rails - 如何获取反向关联字段,尤其是中间表
- asp.net-core - PayPal 交易搜索 API:PERMISSION_DENIED,请求的操作没有权限