CPP/Gdb 返回 0;导致所有用户的会话登录
Cpp/Gdb return 0; causing all user's sessions logut
我编写了一个c++应用程序,它会导致所有KDE会话在程序退出时注销。这显然是不可能的行为,因为我的应用程序在网络上运行。我没有使用任何Qt/KDE库,这就是为什么我很惊讶。应用程序导致return 0;
上的所有会话注销,即使在gdb下运行。在return 0;
执行之前,我检查了rip
寄存器。它指向main()
的中间,在那里我有4行代码。
我的问题是:
- 有人有这样的行为吗?我的意思是在main()结束时在
- 我应该从哪里开始调查我的代码,这种错误的常见地方是什么?
- 如何保存字符的输出?我试过
$ strace app > strace1
。文件已创建,但没有内容(可能是由会话注销引起的)。
return 0;
上注销会话。整个代码太复杂了,不能在这里展示。我正在做:
3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux
EDIT1:当从tty运行应用程序时,注销当前用户并做DoS,只有重新启动机器才能帮助。我将在虚拟机上运行它,也许会有其他的行为
此行为是由应用程序编码错误引起的。当我执行return 0;
时,调用了几个类的析构函数,其中一个是杀死子进程。
// Proof of concept:
#include <unistd.h>
#include <signal.h>
int main()
{ kill(-1, SIGKILL); }
只要读入man -1参数会杀死除1之外的所有进程。这很神秘,哈哈。
如何保存strace的输出?我试过
$ strace app > strace1
.
$ strace app >& strace1
也重定向STDERR
相关文章:
- 如何在 c++ 中将密码和用户名保存到 .txt 文件中.如果用户尝试登录,我仍然希望能够检索它们
- Win7 C++ - 从以用户身份登录的服务启动可执行文件的问题
- 用户注销/登录后,创建托盘图标时出现罕见错误
- 是否有任何 C 函数或 API 来获取当前登录用户下运行的进程列表
- 如何从 Windows 上的服务在未登录用户的桌面上启动应用程序
- 获取 Windows 系统已加入 Azure AD 时登录用户的 UserPrincipalName
- 加密用户数据,而不会丢失安卓应用程序中的登录用户
- 如何检查用户登录到Windows的时间
- 嗨,我正在尝试编码一个允许用户在Visual C 中登录的按钮,程序正在运行,但表单对话框未显示
- 如何从非管理员用户获取当前登录的用户名、域名和用户 sid
- 我如何将登录的用户登录到当前会话中的域用户
- C++检查是否有用户登录到Windows7
- 如何添加基于时间的限制以阻止Windows用户登录
- 在C++中跟踪用户登录的可行性
- 应用程序是不可见的,如果没有任何用户登录从任务调度程序启动
- c++服务-模拟用户登录
- 在Linux/Mac上使用c++检测/等待用户登录
- C++:如何在 Windows 凭据管理器中以编程方式创建本地用户登录凭据,以便"runas /savecred"可以使用它?
- 如何在用户登录/关闭或PC进入睡眠/休眠时正确通知c++ Windows服务
- 如何在多个用户登录Windows时获取活动用户