日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

在linux中查找运行程序句柄,如何查找我的进程在Linux中打开的文件句柄?

發布時間:2023/12/4 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在linux中查找运行程序句柄,如何查找我的进程在Linux中打开的文件句柄? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先,您并不需要關心很多關于您不知道的打開的文件描述符。如果你知道你不會再寫信給他們,關閉它們是一個好主意,并且不會傷害 - 畢竟你只是做了一個fork(),這個fds打開了兩次。但是同樣,如果你讓他們開放,他們也不會打擾你 - 畢竟,你不知道他們,你大概不會隨機寫給他們。

至于你的第三方庫會做什么,這有點夸張。有些人可能不希望遇到fork()的情況,最終可能會意外地從兩個進程寫入同一個fd,而沒有進行任何同步。其他人可能不希望讓你關閉他們的fds。你必須檢查。這就是為什么在庫中隨機打開一個文件描述符并且不給調用者進行管理是一個壞主意。

這么說,本著回答原問題的精神,沒有一個特別好的方法。您可以在文件描述符上調用dup()或dup2();如果關閉,該呼叫將以EBADF失敗。所以,你可以說:

int newfd = dup(oldfd);

if (newfd > 0)

{

close(newfd);

close(oldfd);

}

,但在這一點上,你只是作為小康說,擺在首位close(oldfd)和忽略任何EBADFs。

假設您仍然想要關閉所有內容的核選項,則需要找到可能的最大打開文件描述符數。假設1至65,535不是一個好主意。首先,當然,fds從0開始,但也沒有定義特定的上限。為了便于攜帶,POSIX的sysconf(_SC_OPEN_MAX)應該在任何理想的POSIX系統上告訴你,盡管嚴格來說它是可選的。如果你感到偏執狂,請檢查返回值為-1,但此時你大多不得不退回硬編碼值(1024應該沒問題,除非你做的事很奇怪)。或者,如果您對Linux特定的版本沒有問題,您可以在/ proc中進行挖掘。

不要忘了關閉fds 0,1和2--這可能會讓事情變得混亂。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的在linux中查找运行程序句柄,如何查找我的进程在Linux中打开的文件句柄?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。