小编use*_*234的帖子

C - 是否可以保护少于一页的内容

我真的在寻找任何解决方案 - 我的目标是将小于系统页面大小的区域设置为PROT_READ,PROT_WRITE,PROT_EXEC或PROT_NONE.这可能吗?似乎mprotect只保护页面大小的倍数......

如果不可能,这个设计选择的原因是什么?

c memory mprotect

3
推荐指数
1
解决办法
381
查看次数

bash 脚本 - 仅当不为空时才回显

是否有选项或我可以使用的东西来封装 echo 语句,以便它们在该行为空时不打印?

我在想这样的事情:

myecho(str){
  if [[ -z str ]]; then
    echo str
  fi
}
Run Code Online (Sandbox Code Playgroud)

但我找不到如何传递参数。

bash newline echo

3
推荐指数
1
解决办法
6315
查看次数

Malloc影响随机整数值

我正在用C编写一个虚拟内存模拟器,在linux上编译,我得到了一些相当奇怪的东西.它接收一个文件IO,我将其放入int*plist中.

我打印过这个"plist"阵列,它出现在0 100 1 200 2 400 3 300等

问题是看起来malloc或者某些东西正在随意改变plist [3]为0.它似乎不应该那样,但我在每行代码上都放了一个print语句来打印plist [3] ,和

tables[i].valid = (char*) xmalloc(num_pages * sizeof(char));
Run Code Online (Sandbox Code Playgroud)

是它改变的地方.plist [3] = 300之前的行,0之后的行.并且它只在i = 2时执行此操作.循环的前3轮运行正常,在第3轮,它更改第4轮的值.我不知道为什么,malloc将改变值的意义没有多大意义一个完全不相关的数组 - 我是否有可能超过了一些空间限制,即使我基本上都在使用堆?如果我这样做,它会改变随机数组中的值吗?

for(i = 0; i < 4; i++){

    num_pages = plist[i] / P1;

    tables[i].page_num = (char**) xmalloc(num_pages * sizeof(char*));

    tables[i].valid = (char*) xmalloc(num_pages * sizeof(char));


    //initialize page numbers and valid bits
    for(j = 0; j < 10; j++){
        tables[i].page_num[j] = (char*) xmalloc(16*sizeof(char));
        tmp = itoa(i, tmp);
        strcat(tables[i].page_num[j], tmp);
        strcat(tables[i].page_num[j], "p");
        tmp = itoa(j, tmp); …
Run Code Online (Sandbox Code Playgroud)

c memory arrays malloc

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

UNIX - 为什么$#包含命令(因此总是> = 1)?

由于$#似乎没有在搜索引擎上正常运行,因此很难在此搜索答案.我很好奇为什么argv通常包含命令名称本身,而$#不是.

为了更清楚,如果我有一个名为testing.sh的脚本

#!/bin/bash
echo $#
Run Code Online (Sandbox Code Playgroud)

./testing.sh返回0而不是1.为什么?

unix bash arguments

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

强制用户在Java中声明变量

所以,我一直在研究Java中的抽象类和接口,我想知道是否有一种方法(可能不使用?)来强制用户声明具有某些名称的变量.

我正在使用注释,因此目标是制作一些接口或抽象的东西:

public interface Foo{
    Integer x;
    Double y;
}
Run Code Online (Sandbox Code Playgroud)

然后我希望用户用这些变量类型填充它(尽管类型是可选的,只要它有名称)和名称,按照他们希望它们注释的方式进行注释.这可能吗?

java interface abstract

0
推荐指数
1
解决办法
141
查看次数

C - 读取()添加'\ 0'?

它有吗?我总是对这种东西模糊不清,但如果我有类似的东西:

char buf[256];
read(fd, buf, 256);

write(fd2, buf, 256);
Run Code Online (Sandbox Code Playgroud)

除了这些函数返回-1的情况之外,这里是否存在错误的可能性?

如果它只读40个字符,它会在它之后放一个\ 0吗?(并且会写出识别\ 0并停止?另外,如果要读取256个字符,那么256之后是否有\ 0?

c unix io posix unbuffered

-1
推荐指数
2
解决办法
1832
查看次数

标签 统计

c ×3

bash ×2

memory ×2

unix ×2

abstract ×1

arguments ×1

arrays ×1

echo ×1

interface ×1

io ×1

java ×1

malloc ×1

mprotect ×1

newline ×1

posix ×1

unbuffered ×1