linux命令"lsof“返回正在访问的文件,我在shell中尝试使用vi打开一个文件,用kwrite打开另一个文件,然后返回并得到vi的进程,但没有kwrite进程,如下所示[linux@COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEbash 3747 linux
program ran, no arguments means argv=1
pid=fork();
char cwd如果我的理解是正确的,那么shell (终端)就是它自己的进程,所以当你调用fork时,它会创建一个新的子进程,它的父进程就变成了shell。因此,尝试在子进程中执行chdir不会转换到shell中,您将保留在同一目录中,因此您需要在父PID中执行chdir函数,对吗?/sc
作为我,我在终点站玩(Zsh)。我尝试过的事情之一(在一个空目录中)是mkdir test; ls | cd --它应该创建一个文件夹,然后打印所有文件夹(所以就是那个文件夹),并将输出输到cd中。所以我希望它能带我到测试目录,但是我得到了(pwd now: ~),它把我带回了主目录。有人知道这是为什么吗?查一下没什么用。
对于给定的进程ID,确定环境变量(例如PATH)的最佳/最直接方法是什么?必须能够查询任意环境变量。PATH只是第一个例子。'lsof -a -p $PID -d cwd -F' gets some of it.
但是,我没有看到使用lsof获取给定PID的路径的方法。在许多其他Linux/UNIX变体上,您可以查看'/proc//environ‘。但是,OS显然没有使用这种机制。