草庐IT

Ctrl-Alt-Del

全部标签

c - 如何使用 libreadline 处理 Ctrl-D

我用C构建了一个程序,它是一个控制台,我使用libreadline来帮助我构建这个控制台。一切正常,但当我收到ctrl-d时,出现段错误。我能弄清楚如何处理这个问题,我曾尝试使用signal.h来执行此操作,但没有用。下面是我的一段代码。intinit_console(char*ip,intport){/**Variaveisqueserãoutilizadas*/char*str_command;char*filename=malloc(100);Client*cli=malloc(sizeof(Client));/**Montaofilenamedoarquivodehistóri

c - fgets 和处理 CTRL+D 输入

我正在从用户那里获取一些标准输入,如果用户按下CTRL+D,我想显示错误并终止程序。我想我的问题可能与陷入while循环有关;intreadInput(){charbuff[10];intcount=0;intcounter;printf("Enterrandomnumber:");fgets(buff,10,stdin);if((int)strtol(buff,NULL,10)==0){printf("Errorreadingnumber.\n");return0;//ThiswillgethitiftheuserpressesCTRL+Datthisinput.}counter=a

linux - 在 ksh 中捕获 CTRL +D

如何在ksh和退出后捕获CTRL+D键盘?whiletrue;doreadcmdecho$cmdif["$cmd"="?????"];thenbreakfidone 最佳答案 CTRL-D是“文件结尾(EOF)”,您需要做的是“捕获”该输入。不幸的是,没有EOF字符——当您按下和弦CTRL-D时,tty会向读取应用程序发送一个信号,表明输入流已完成返回一个标记值以使其退出。为了防止此字符被视为进一步的输入,它必须是一个特殊字符(例如超出范围的字符,如-1)。当终端检测到这样的字符时,它会缓冲所有字符,以便输入为空,这反过来会使您的程

linux - xmonad xmodmap 将选项卡更改为 alt gr 但它不适用于 firefox 或 Thunderbird

我使用xmonad并用xmodmap更改了我的键盘以使用我的altgr键作为制表符。我把我的Super_L移到了tab键,这是我的xmonad的modm键。它在其他应用程序中运行良好,但不适用于firefox或Thunderbird。这两个应用程序只是忽略了altgrpress。我在安全模式下尝试了firefox,但问题仍然存在。 最佳答案 我遇到了同样的问题,找到了答案here:添加:Option"XkbVariant""intl"到/etc/X11/xorg.conf.d/10-evdev.confSection"InputCl

linux - 完全禁用 Raspbian 中的 Alt 键

我希望将raspberrypi开发成可以运行免费使用的公共(public)Web终端的东西,该终端将被锁定到某个域。这是给我的雇主,一个乡镇,他想在乡镇周围建立终端,这样我们社区中不幸的人就能够联系和互动乡镇提供的各种服务,而无需找到行政部门的途径中央。我已经能够完成我想要的大部分工作,但我想禁用键盘上的Alt键。这将阻止用户使用Ctrl+Alt+Del或Alt+F4脱离浏览器环境,以及LXDE的各种其他功能,聪明的用户可以使用这些功能来破坏我的信息亭(如虚拟终端)。我以为我已经找到了使用xmodmap执行此操作的方法,但是当我运行此命令时xmodmap-e"keycode204="据

linux - 为什么在 Linux 上使用 RS-232 时 CTRL+C 不起作用?

首先,我不知道这个应该留在SO还是去SU:你告诉我。解决方案可能与编程有关。我在嵌入式设备上执行Linux,并使用RS-232@9600波特与其通信。在Windows上使用PuTTY一​​切正常:我有一个shell,可以键入和执行命令。问题是:当我启动一个命令时,我不能按CTRL+C。例如,当ping某台机器时,ping进入无限循环,我无法使用CTRL+C停止它。但是,在Bash提示符下,CTRL+C起作用并转到下一行(因此它被传输)。我还注意到,当我在运行命令时执行CTRL+C时,终端显示^C。通过Telnet连接时,CTRL+C在任何地方都可以正常工作。我尝试使用PuTTY的“特殊

linux - 使用 Ctrl-C (SIGINT) 在 Perl 中使用系统命令打破 while 循环?

考虑以下示例,test.pl:#!/usr/bin/envperluse5.10.1;usewarnings;usestrict;$SIG{'INT'}=sub{print"CaughtCtrl-C-Exit!\n";exit1;};$|=1;#turnoffoutputlinebufferinguseGetopt::Long;my$doSystemLoop=0;GetOptions("dosysloop"=>\$doSystemLoop);print("$0:doSystemLoopis:$doSystemLoop(use".(($doSystemLoop)?"system":"Pe

linux - Perl 在 bash 中用线程捕获 Ctrl-C

当我看到如何拥有PerltrapCtrl-C(sigint)inbash时;我迷失了为什么它会因线程而失败;我正在尝试以下脚本:#!/usr/bin/envperlusethreads;usethreads::shared;#forsharedvariablesmy$cnt:shared=0;subcounter(){while(1){$cnt++;print"thread:$cnt\n";sleep1;}}subfinisher{###Threadexit!...print"IIII";threads->exit();die;};#anyofthesewillcausestopofr

linux - Shell 脚本使用 Trap 获取 CTRL+Z

我正在尝试在脚本的trap中获取SIGSTOPCTRL+Z信号。当我的脚本正在执行时,如果我暂时暂停执行,发送一个SIGSTOP信号CTRL+Z,它需要删除我在其中创建的文件并终止执行。我不明白为什么下面的脚本不起作用。但是,更重要的是,正确的做法是什么?#!/bin/bashDIR="temp_folder"trap"rm-r$DIR;kill-SIGINT$$"SIGSTPif[-d$DIR]thenrm-r$DIRelsemkdir$DIRfisleep5编辑:SIGSTOP不能被捕获,但是SIGTSTP可以被捕获,而且据我在searchingontheinternet之后的理解

linux - 如何通过 SSH(不带 -t 选项)将 SIGINT (Ctrl-C) 发送到当前远程进程

我需要在SSHsession中向在前台运行的远程进程发送SIGINT。SSHsession已经建立,所以我不能使用启动它的选项(如HowtosendSIGINTtoaremoteprocessoverSSH?中所述)ssh-tuser@host我知道我可以打开第二个sshsession并终止进程或关闭当前的sshsession,但我想避免这种情况并直接抛出当前session(如果可能的话)。 最佳答案 如果您使用ssh在远程系统上启动一个没有PTY的进程,那么据我所知,没有办法通过该sshsession向远程进程发送信号。SSH协议