以下是使用fcntl
来操纵文件描述符的语法:
val = fcntl(fd, F_GETOWN, 0)
在文档中提到该命令返回正进程ID或负进程组ID。
还提到了-1
的值表示发生了错误。
如何确定该函数是否有错误或返回了组ID的负值?
答案 0 :(得分:3)
-1是一个错误。其他负值是进程组ID。要为此功能引用the Single UNIX specification(强调我的意思):
F_GETOWN
如果 fildes 引用套接字,请获取指定的进程ID或进程组ID,以在可用带外数据时接收SIGURG信号。正值应表示进程ID;负值(<-1>而不是-1 )应表示进程组ID;零值将指示不发送SIGURG信号。如果 fildes 不引用套接字,则结果不确定。
请记住,进程组ID -1并没有多大意义。这意味着pid 1(即init
)是进程组的领导者。在任何正常系统中都是不可能的,并且会产生不良影响。