我想确定哪个进程具有 UNIX 套接字的另一端。
具体来说,我问的是用 来创建的socketpair(),尽管任何 UNIX 套接字的问题都是一样的。
我有一个程序parent可以创建一个socketpair(AF_UNIX, SOCK_STREAM, 0, fds), 和fork()s。父进程关闭fds[1]并保持fds[0]通信。孩子反其道而行之,close(fds[0]); s=fds[1]。然后孩子exec()的另一个程序,child1。两者可以通过这个 socketpair 来回通信。
现在,假设我知道parent是谁,但我想弄清楚是谁child1。我该怎么做呢?
有几种工具可供我使用,但没有一个可以告诉我套接字的另一端是哪个进程。我试过了:
lsof -c prognamelsof -c parent -c child1ls -l /proc/$(pidof server)/fdcat /proc/net/unix基本上,我可以看到两个套接字以及关于它们的所有内容,但无法判断它们是否已连接。我试图确定父进程中的哪个 FD 正在与哪个子进程通信。
我注意到,如果源应用程序(内容是从其中复制的)关闭,有时剪贴板内容会变得不可用。
这让我想知道是否有可能知道源应用程序是什么(例如,可能通过 PID)。
为什么?如果源应用程序是终端,我想找到终端的工作目录,以防复制的内容是相对路径,以构建文件的完整路径。
仅供参考,我目前正在使用 xclip 来确定剪贴板内容,例如
xclip -selection primary -t STRING -o 2> /dev/null
Run Code Online (Sandbox Code Playgroud) 有没有办法重点关注 X 应用程序的优先级,最好是在 CPU 和 I/O 方面?
类似于所有 X 应用程序的优先级都被优化和离子化,但是当它们获得焦点时,它们会被优化和离子化回到正常水平。
我不想重新发明轮子,所以我希望有人已经开发了一个可以做到这一点的应用程序。
不要将这里的问题与如何以图形方式列出进程混淆,这不是我要问的。
在终端中,如何查看哪些进程具有 GUI?就像 firefox、vlc、geany、nautilus 等一样......都有一个 gui。我想了解有关哪些进程正在使用窗口管理器资源的更多信息,我想从终端执行此操作。
我如何获得有关这些类型流程的更多信息?
我一直在尝试使用该ps命令,但我会接受任何终端命令来帮助我解决这个问题。
更新:我看到了一些我喜欢的东西,我pstree
感兴趣的所有图形过程都是从树中产生的:
$pstree
在里面???
?
??lightdm???Xorg
? ??lightdm???init???
? ? ? ??firefox???55*[{firefox}]
? ? ? ??geany???bash
? ? ? ?
? ? ? ??gnome-terminal???bash???pstree
我试过这个:
xprop -id $(gedit & echo $!) -f MY_VAR1 8s -set MY_VAR1 MyCustomVar
Run Code Online (Sandbox Code Playgroud)
比我尝试 xprop 并单击 gedit 窗口 - MY_VAR1 不在那里。
所以我想也许我应该把睡眠放在那里......我试过:
xprop -id $(gedit & sleep 5 & echo $!) -f MY_VAR1 8s -set MY_VAR1 MyCustomVar
Run Code Online (Sandbox Code Playgroud)
等了 5 秒钟并尝试了 xprop 并单击了新窗口.. 仍然没有
谢谢
process ×3
x11 ×2
bash ×1
clipboard ×1
linux ×1
lsof ×1
nice ×1
open-files ×1
priority ×1
ps ×1
scheduling ×1
shell ×1
shell-script ×1
socket ×1
xclip ×1