linux命令"lsof“返回正在访问的文件,我在shell中尝试使用vi打开一个文件,用kwrite打开另一个文件,然后返回并得到vi的进程,但没有kwrite进程,如下所示
[linux@localhost shell_ex]$ lsof +d .
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 3458 linux cwd DIR 253,2 50 953101 .
bash 3747 linux cwd DIR 253,2 50 95
在Windows (MinGW)中,我的程序从调用进程继承不必要的句柄。
这个过程不需要打开这些文件,但是由于它存在于父进程的生命周期之外,所以我会遇到打开文件时通常会遇到的问题。
在Linux上,我解决了这样的问题:
// Close all file descriptors
// It's hard to figure out how many are open, but the first 1000 should do
int fd;
for (fd = 0; fd < 1000; fd++)
close (fd);
这在Windows中似乎不起作用。
如何确定哪些文件
我想要一个Linux中的虚拟以太网设备,它可以像普通的以太网设备那样响应,但是我可以在软件中连接到它。我试图使用以下命令生成虚拟设备:
ip link del dummy99
ip link add dummy99 type dummy
ifconfig dummy99 hw ether C8:55:44:33:22:11
ifconfig dummy99 192.168.99.1 up
这就创建了一个设备,我可以将pings发送到192.168.99.2,它们被寻址到我将这个端口设置为的相同的MAC地址,而不是向dummy99发送一个ARP请求。
我如何使Linux假设有一个连接到dummy
我运行valgrind来查看我的程序有哪些关于内存问题的错误。valgrind的输出是:
==31041== 17,736 bytes in 1 blocks are still reachable in loss record 423 of 423
==31041== at 0x4C2CD7B: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==31041== by 0x5B0F21F: CRYPTO_malloc (in /lib/x86_64-linux-gnu/libcrypto.so.1.0