我试图通过修改系统调用表来挂接Linux3.x内核上的sys_execve()函数。问题是,sys_execve()应该只在执行不成功时才返回错误代码。使用我正在使用的包装器函数(见下文),当在有效的可执行文件上调用sys_execve()时,它可以很好地执行,并且一切正常。但是,当它在一个不存在的文件或其他导致错误条件的文件上被调用时,调用程序将崩溃,并显示:
segfault at 3b ip 000000000000003b...
使用strace检查挂钩的sys_execve()的返回值显示-1或ENOSYS,而不是正确的错误代码,这让我感到困惑,因为我已经检查了包装器函数的程序集以及
错误在处理过程中被屏蔽:linux 6.2.12-060212-generic headers泛型linux标头-泛型linux标头-6.2.0-20泛型linux标头6.2.12-060212泛型E: Sub /usr/bin/dpkg返回了一个错误代码(1),我用6.2.20进行了升级,系统没有启动,所以我使用了一个较旧的6.0.9内核,并且我能够启动。然后安装了6.2.12,认为一个新的内核会有所帮助,但我有同样的问题,系统不会用更新的内核启动。试图删除6.2.0.20,并表示它有依赖关系。我该怎么做才能解决这个问题?
我正试图使用这个SteamCMD在我的Linux机器上安装指南。但是,在创建了用户steam并安装了SteamCMD之后,我遇到了一个问题。整个错误代码是
Command 'steamcmd' is available in '/usr/games/steamcmd'
The command could not be located because '/usr/games' is not included in the PATH environment
variable
然而,我对Linux并没有那么精通技术。我不确定如何才能让用户steam访