使用“ strace”轨道`````''''系统呼叫
我想清除终端,我找到了两种解决方案:
我实现了2
解决方案,它起作用。顺便说一句,什么是语法。 - 名称的clear
,我在
.section .data
clear:
.string "\033[H\033[2J"
.equ CLEAR_LEN, . - clear
.section .text
.globl _start
_start:
movq $1, %rax
movq $1, %rdi
movq $clear, %rsi
movq $CLEAR_LEN, %rdx
syscall
movq $60, %rax
syscall
对于1
解决方案,我有疑问。我使用Xshell
连接远程Linux,而不是使用msdos
,因此窗口的大小可以更换。如果我们想知道大小似乎很困难。因此,我认为该解决方案是不可行的。
此外,我认为我们在c
中使用system(“ clear”)
,因此它可能在汇编中起作用,然后我使用strace
跟踪在C代码下方。
#include <stdlib.h>
int main(void) {
system("clear");
return 0;
}
我找到了一些奇怪的系统调用
。它清晰终端吗?
rt_sigaction(SIGINT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fadf89dc0c0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGQUIT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fadf89dc0c0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
...
rt_sigprocmask(SIG_BLOCK, ~[], [CHLD], 8) = 0
...
rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fadf89dc0c0}, NULL, 8) = 0
rt_sigaction(SIGQUIT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fadf89dc0c0}, NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=640502, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
I want to clear terminal, and I found two solutions:
I implemented 2
solution, it works. And BTW, What is the syntax . - clear
of name, I can't found in using as.
.section .data
clear:
.string "\033[H\033[2J"
.equ CLEAR_LEN, . - clear
.section .text
.globl _start
_start:
movq $1, %rax
movq $1, %rdi
movq $clear, %rsi
movq $CLEAR_LEN, %rdx
syscall
movq $60, %rax
syscall
For 1
solution, I have a doubt. I use Xshell
connect remote linux, rather than use MSDOS
, so the size of window can changable. If we wanna know the size seems difficult. So I think this solution is unworkable.
In addition, I think we use system("clear")
in C
, so it probably works in assembly, and then I use strace
track below c code.
#include <stdlib.h>
int main(void) {
system("clear");
return 0;
}
And I found some strange system calls
. Is it clear terminal?
rt_sigaction(SIGINT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fadf89dc0c0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGQUIT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fadf89dc0c0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
...
rt_sigprocmask(SIG_BLOCK, ~[], [CHLD], 8) = 0
...
rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fadf89dc0c0}, NULL, 8) = 0
rt_sigaction(SIGQUIT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fadf89dc0c0}, NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=640502, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论