【问题标题】:How to know if we get an error or a group ID using fcntl and F_GETOWN ?如何使用 fcntl 和 F_GETOWN 知道我们是否收到错误或组 ID?
【发布时间】:2019-04-27 11:50:04
【问题描述】:

下面是使用fcntl 操作文件描述符的语法:

val = fcntl(fd, F_GETOWN, 0)

在文档中提到此命令返回正进程 ID 或负进程组 ID。

还提到-1 的值表示发生了错误。

如何确定函数是否有错误或返回组 ID 的负值?

【问题讨论】:

    标签: c process linux-kernel system-calls file-descriptor


    【解决方案1】:

    -1 是一个错误。其他负值是进程组 ID。为此功能引用the Single UNIX specification(强调我的):

    F_GETOWN

    如果 fildes 引用套接字,则获取指定的进程 ID 或进程组 ID,以便在带外数据可用时接收 SIGURG 信号。正值应表示进程 ID;负值,-1 以外的,应表示进程组 ID;零值应指示不发送 SIGURG 信号。如果 fildes 不引用套接字,则结果未指定。

    请记住,-1 的进程组 ID 无论如何都没有多大意义。这意味着 pid 1(即init)是进程组的领导者。这在任何正常系统中都是不可能的,并且会产生不良影响。

    【讨论】:

      猜你喜欢
      • 2017-10-17
      • 2012-12-02
      • 2021-08-07
      • 2021-08-24
      • 2016-05-16
      • 1970-01-01
      • 1970-01-01
      • 2020-02-22
      • 1970-01-01
      相关资源
      最近更新 更多