我一直在 Unix 或 Linux 或 C 函数中看到命令后面的括号和数字。
例如:man(8)、ftok(2)、mount(8)等。
这些是什么意思?我在男人身上也看到了它们。
我已经下载从GitHub死简单的Windows程序(这个如果是相关的)。我将它下载为 ZIP 文件,但我不知道如何安装它。我认为它是用 C 编写的。我需要编译器吗?(Visual Studio?)有什么我遗漏的简单东西吗?
可能的重复:
如何在 Word 中轻松突出显示 PHP 代码的语法?
我需要在 Microsoft Office Word 中粘贴一些代码 (ANSI C),并且需要某种形式的语法突出显示(而不是简单地将字体更改为Lucida Console)
是否有某种插件可以让我在 Microsoft Office Word 中突出显示代码语法?
#include <stdlib.h>
#include <unistd.h>
int main()
{
while(1)
fork();
}
Run Code Online (Sandbox Code Playgroud)
这是分叉炸弹的代码。
在我们学院,我们通过 telnet 即客户端服务协议进行连接。大约 100 个系统连接到服务器。突然我们看到服务器变得很慢,一段时间后它崩溃了。我开始知道有人实施了一个叉子炸弹。
我们如何检测分叉炸弹是在哪个系统上实现的?我们怎样才能阻止它?
一种方法是限制单个用户可以拥有的最大进程数。有什么方法可以阻止它并知道它是从哪个系统实现的?
出于某种奇怪的原因,make在 Windows 上编译时一直给我制表错误,所以我在 Ubuntu 上试了一下,效果很好。
现在我想使用我在 Ubuntu 上编译得到的可执行文件并在 Windows 上使用它。但是,当我在 Windows 上下载它时,我得到的文件类型是不同的,因为它只是类型file. 鉴于它是在 Ubuntu 上编译的,是否可以在 Windows 上运行它?
我正在编写 shellcode 来利用服务器上的缓冲区溢出漏洞。为此,我将端口绑定 shellcode 发送到服务器,然后我(从 linux 终端)运行命令 telnet serverAdress 4444,其中 4444 是我打开的端口。希望我能收到一个可用于执行命令的 shell。但是,我总是以命令结束
bin/sh: 无法访问 tty;作业控制关闭
我无法更改任何服务器代码,我相信 shellcode 是正确的,因为我是从这个网站 ( http://www.tsirogiannis.com/exploits-vulnerabilities-videos-papers-shellcode/linuxx86-port- binding-shellcode-xor-encoded-152-bytes/ )。从我的研究来看,这似乎与我的终端运行的模式有关(称为交互模式......或类似的东西)。
涉及的所有计算机都是 linux 机器,我所在的机器运行的是最新版本的 Ubuntu。
任何想法这个作业控制错误意味着什么以及我如何解决它?
如果我的 C 程序使用套接字、绑定到localhost:9025、交换一些数据、被手动杀死并重新启动,它有时会崩溃并出现以下错误:
地址已被使用。
我试图寻找“使用端口的pid”的所有SE推荐的软件都未能返回任何进程ID,所以我假设当时没有进程使用端口 9025,应该是这种情况。
尽管如此,根据我从对主题相似问题的评论中收集到的信息,在我看来,当且仅当进程使用该特定地址时,“地址”才“已在使用”。那为什么这是假的呢?
现在我假设操作系统会跟踪哪些地址正在使用,哪些没有,但情况是这样吗?如果是这样,我很乐意您告诉我如何纠正它,因为我对这个问题的最佳解决方案是“等待不确定的时间”。
编辑:我使用 Linux 5.2.2-arch1-1-ARCH x86_64
在 emacs 中编辑 C 或 C++ 文件时,我希望能够转到包含代码块的开头。我期待找到一个 c-beginning-of-block 函数,但唉,不存在这样的函数(据我所知)。例如,我可能正在编辑以下丑陋的 C 代码:
void myFunction()
{
if (something) { //<--- I want to jump to this brace!
// do lots of stuff
if (stuff) {
// stuff
}
// more stuff
// ...
// I want to put my cursor somewhere on this line <---
// (anywhere just outside the following if) and call c-beginning-of-block
// and jump to the brace marked above (skipping "sibling" statements)
if (pizza_is_good) {
// …Run Code Online (Sandbox Code Playgroud) #include <unistd.h>
int main(int argc, char* argv[]) {
while(1)
{
fork();
}
}
Run Code Online (Sandbox Code Playgroud)
我在我的 linux 上运行这个程序,终端上没有任何输出,操作系统似乎死了。linux对这种内存不足的程序有什么保护措施吗?
我有一个 C 程序,它在深入陷入无限递归混乱之后对错误进行分段。在 GDB 中回溯过程是没有用的,因为调用堆栈帧至少有1000 帧深,并且重复的函数调用是一系列四个常见的递归函数调用(因此断点似乎没有用)。对 backtrace 的重复调用只是一遍又一遍地读出四个函数名称。我突然想到,做 'up' 'up' 'up'... 会让我更上一层楼,所以我可以看到这种模式首先开始发生的地方,但似乎从最顶层的调用开始会更有效堆栈帧并逐步下降,因为我的直觉是无限递归在过程的早期开始。如果调用堆栈总共有 N 帧,我知道我可以做
gdb>> up N
Run Code Online (Sandbox Code Playgroud)
到达堆栈的顶部(第 N 帧),但问题是我不知道 N。是否有用于查找调用堆栈中的总帧数的命令?或者,是否有一个巧妙的内置 GDB 命令用于跳转到最顶层的帧?我突然想到最顶层的框架应该是main()函数——我可以利用这些知识到达最顶层的框架吗?
c ×10
linux ×4
ubuntu ×2
c++ ×1
command-line ×1
debug ×1
emacs ×1
gdb ×1
linux-kernel ×1
make ×1
manpages ×1
networking ×1
process ×1
sockets ×1
telnet ×1
terminal ×1
unix ×1
windows-10 ×1
windows-7 ×1