我对FC17 Linux中的"ls"命令进行了分析.
以下是输出.
execve("/usr/bin/ls", ["ls"], [/* 48 vars */]) = 0
brk(0) = 0x27c1000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fc765fa6000
...
Run Code Online (Sandbox Code Playgroud)
我没有得到将-1作为文件描述符传递给mmap调用的目的和结果,有人可以对此有所了解吗?
我在执行此代码片段时发现了一个奇怪的行为
#include <stdio.h>
void main()
{
char *a[10] = {"hi", "hello", "how"};
int i = 0, j = 0;
for (i = 0;i < 10; i++)
printf("%s\n", a[i]);
}
Run Code Online (Sandbox Code Playgroud)
输出:
hi
hello
how
Segmentation fault
Run Code Online (Sandbox Code Playgroud)
但是如果我用printf语句中的空格字符替换'\n'字符,那么就没有seg.错误即将到来
hi hello how (null) (null) (null) (null) (null) (null) (null)
Run Code Online (Sandbox Code Playgroud)
我在Ubuntu上使用gcc v4.4.3.换行符如何导致seg.printf中的错误?
我执行了以下代码片段(使用gcc编译)
#include <stdio.h>
void main()
{
double b = 5 % 3 & 4 + 5 * 6;
printf("%lf", b);
}
Run Code Online (Sandbox Code Playgroud)
输出是2.000000我没有得到它为什么这样的原因.