今天更新完 Windows 重启后发现上不了网了,检查 clash for windows 发现监听端口为 0 。
这就不正常了,检查了一下 C:\Users\<username>\.config\clash\logs 的日志,发现这行报错:
level=error msg="Start Mixed(http and socks) server error: listen tcp 127.0.0.1:7890: bind: An attempt was made to access a socket in a way forbidden by its access permissions." 貌似是端口无法被正常绑定,网上找了一下原因,发现遇到该问题的人不少,大致这样解决:
...
Perl 程序后台执行示例
最近阅读 PVE 源码发现一处源码这样使用了 fork() 方法:
$spid = fork(); if (!defined ($spid)) { die "can't put server into background - fork failed"; } elsif ($spid) { # parent exit (0); } 自己写示例发现这种方法可以使程序进入后台执行状态,大概原理是 fork 子进程,退出主进程,使得程序被 1 号父进程接管,在终端表现则是进入了后台执行状态。
...
Perl 面向对象之基类(use base)
use base somemodule; # 相当于以下两句的结合: BEGIN{ use somemodule (); push @ISA, qw(somemodule); } # 也可以同时 use base 两个或者两个以上的模块,即多继承,例如: use base qw(Foo Bar); BEGIN { use Foo (); use Bar (); push @ISA, qw(Foo Bar); } Perl 里 类方法通过 @ISA 数组继承,这个数组里面包含其他包(类)的名字,变量的继承必须明确设定。 多继承就是这个 @ISA 数组包含多个类(包)名字。 通过 @ISA 只能继承方法,不能继承数据。 参考文献 Perl 面向对象 Perl 中的 use base 的用法
Perl 模块路径指定(调试环境)
在调试 Perl 测试程序时,常常需要在测试路劲执行 Perl 脚本,相应的 .pm 模块测试程序也需并不在 Perl 默认的模块路径下,使用以下语句即可指定模块检索路径。
#!/usr/bin/perl use lib './'; use Person; # Person 包模块与当前脚本同级,可用上面两行代码指定包位置 ... 参考文献 Perl模块安装到非默认路径及其使用 两种指定Perl模块目录的方法(PERLLIB和use lib)
QEMU 编译报错 undefined reference to g_app_info_launch_default_for_uri_finish 解决过程
编译 QEMU 时报如下错误:
/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_app_info_launch_default_for_uri_finish' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_type_check_instance_is_fundamentally_a' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_app_info_launch_default_for_uri_async' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_strv_contains' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_list_model_get_type' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_drive_is_removable' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_application_get_resource_base_path' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_log_structured_standard' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_type_get_instance_count' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_list_model_get_n_items' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_file_enumerator_iterate' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_param_spec_get_name_quark' /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_list_model_get_item' collect2: error: ld returned 1 exit status make[1]: *** [qemu-system-x86_64] Error 1 make: *** [subdir-x86_64-softmmu] Error 2 先看一下报错的动态链接库依赖了哪些库:
...