标签: c

Unix 命令或 C 函数后的括号和数字是什么意思?

我一直在 Unix 或 Linux 或 C 函数中看到命令后面的括号和数字。

例如:man(8)、ftok(2)、mount(8)等。

这些是什么意思?我在男人身上也看到了它们。

linux unix command-line c manpages

238
推荐指数
4
解决办法
2万
查看次数

如何安装从 GitHub 下载的 Windows 程序(用 C 编写)?

我已经下载从GitHub死简单的Windows程序(这个如果是相关的)。我将它下载为 ZIP 文件,但我不知道如何安装它。我认为它是用 C 编写的。我需要编译器吗?(Visual Studio?)有什么我遗漏的简单东西吗?

windows-7 c

46
推荐指数
4
解决办法
1万
查看次数

Microsoft Office Word 中的语法高亮显示

可能的重复:
如何在 Word 中轻松突出显示 PHP 代码的语法?

我需要在 Microsoft Office Word 中粘贴一些代码 (ANSI C),并且需要某种形式的语法突出显示(而不是简单地将字体更改为Lucida Console

是否有某种插件可以让我在 Microsoft Office Word 中突出显示代码语法?

c syntax-highlighting microsoft-word

34
推荐指数
1
解决办法
7万
查看次数

如何停止和检测叉子炸弹

#include <stdlib.h>
#include <unistd.h>

int main()
{
   while(1)
      fork();
}
Run Code Online (Sandbox Code Playgroud)

这是分叉炸弹的代码。

在我们学院,我们通过 telnet 即客户端服务协议进行连接。大约 100 个系统连接到服务器。突然我们看到服务器变得很慢,一段时间后它崩溃了。我开始知道有人实施了一个叉子炸弹。

我们如何检测分叉炸弹是在哪个系统上实现的?我们怎样才能阻止它?

一种方法是限制单个用户可以拥有的最大进程数。有什么方法可以阻止它并知道它是从哪个系统实现的?

telnet operating-systems process c

15
推荐指数
2
解决办法
6232
查看次数

在 Ubuntu 上编译 C 文件并在 Windows 上使用可执行文件

出于某种奇怪的原因,make在 Windows 上编译时一直给我制表错误,所以我在 Ubuntu 上试了一下,效果很好。

现在我想使用我在 Ubuntu 上编译得到的可执行文件并在 Windows 上使用它。但是,当我在 Windows 上下载它时,我得到的文件类型是不同的,因为它只是类型file. 鉴于它是在 Ubuntu 上编译的,是否可以在 Windows 上运行它?

c make ubuntu windows-10

14
推荐指数
2
解决办法
5629
查看次数

“bin/sh: 无法访问 tty;作业控制已关闭”运行 shellcode 时出错”

我正在编写 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。

任何想法这个作业控制错误意味着什么以及我如何解决它?

linux terminal c ubuntu

13
推荐指数
1
解决办法
10万
查看次数

操作系统如何判断“地址是否已被使用”?

如果我的 C 程序使用套接字、绑定到localhost:9025、交换一些数据、被手动杀死并重新启动,它有时会崩溃并出现以下错误:

地址已被使用。

我试图寻找“使用端口的pid”的所有SE推荐的软件都未能返回任何进程ID,所以我假设当时没有进程使用端口 9025,应该是这种情况。

尽管如此,根据我从对主题相似问题的评论中收集到的信息,在我看来,当且仅当进程使用该特定地址时,“地址”才“已在使用”。那为什么这是假的呢?

现在我假设操作系统会跟踪哪些地址正在使用,哪些没有,但情况是这样吗?如果是这样,我很乐意您告诉我如何纠正它,因为我对这个问题的最佳解决方案是“等待不确定的时间”。

编辑:我使用 Linux 5.2.2-arch1-1-ARCH x86_64

networking linux c sockets

13
推荐指数
1
解决办法
4067
查看次数

emacs -- C/C++ 跳转到包含块的开头

在 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)

emacs c c++

12
推荐指数
1
解决办法
4975
查看次数

linux 有没有什么措施可以防止分叉炸弹?

#include <unistd.h>
int main(int argc, char* argv[]) {
  while(1)
  {
    fork();
  } 
}
Run Code Online (Sandbox Code Playgroud)

我在我的 linux 上运行这个程序,终端上没有任何输出,操作系统似乎死了。linux对这种内存不足的程序有什么保护措施吗?

linux c linux-kernel

12
推荐指数
4
解决办法
4163
查看次数

在GDB中,如何直接跳转到最顶层的调用栈帧?

我有一个 C 程序,它在深入陷入无限递归混乱之后对错误进行分段。在 GDB 中回溯过程是没有用的,因为调用堆栈帧至少有1000 帧深,并且重复的函数调用是一系列四个常见的递归函数调用(因此断点似乎没有用)。对 backtrace 的重复调用只是一遍又一遍地读出四个函数名称。我突然想到,做 'up' 'up' 'up'... 会让我更上一层楼,所以我可以看到这种模式首先开始发生的地方,但似乎从最顶层的调用开始会更有效堆栈帧并逐步下降,因为我的直觉是无限递归在过程的早期开始。如果调用堆栈总共有 N 帧,我知道我可以做

gdb>> up N
Run Code Online (Sandbox Code Playgroud)

到达堆栈的顶部(第 N 帧),但问题是我不知道 N。是否有用于查找调用堆栈中的总帧数的命令?或者,是否有一个巧妙的内置 GDB 命令用于跳转到最顶层的帧?我突然想到最顶层的框架应该是main()函数——我可以利用这些知识到达最顶层的框架吗?

c gdb debug

10
推荐指数
2
解决办法
8780
查看次数