Articles of Linux操作系统

内存分配失败,即使有足够的内存

我正在使用Linux(正好是Ubuntu 13.04),目前我有一个问题:为什么内存分配将失败,即使有足够的内存? 我今天写了一个简单的testing应用程序,在运行这个testing应用程序时遇到了这个问题 以下是我用来testing的代码片段: #include <stdio.h> #include <unistd.h> #include <list> #include <vector> #include <strings.h> using namespace std; unsigned short calcrc(unsigned char *ptr, int count) { unsigned short crc; unsigned char i; //high cpu-consumption code //implements CRC algorithm: Cylic //Redundancy code } void* CreateChild(void* param){ vector<unsigned char*> MemoryVector; pid_t PID = fork(); if (PID == 0){ […]

在Linux中使用C ++设置系统date和时间

我正在开发跨平台应用程序,将系统date和时间更改为指定的值。 我已经完成了Windows的部分。 我如何从Linux的C++程序设置系统date和时间? 我正在寻找一个类似于SetSystemTime(SYSTEMTIME &x)的函数。 就我所知, settimeofday()对date没有任何作用,我不确定函数stime()的用法。 我希望mktime()与我的需要无关。 有谁能够帮助我。

以符号表示法(包括粘滞位)的unix权限转换器

我需要使用像这样的符号表示法来获取文件或文件夹更具 human readable格式的Access rights in u=rwx,g=srwx,o-rwx (可能是sticky bits) 使用stat –format '%a'格式stat –format '%a' ,我得到格式为2770 ,八进制格式的结果 使用stat –format '%A' ,我得到一个格式为drwxrws—的结果,可读性强 我需要一个命令来获得像u=rwx,g=srwx,o-rwx (与chmod symbolic modes兼容) [u|g|o] :用于user / group / other或者全部 [=] :授予的权利 [rwxst] :授予的订单重要性的列表 [-rwx] :对于被撤销的权利(如果没有授予权利) 我已经尝试过(但它不处理所有的情况下,特殊的粘性位): stat –format '%A' temp | sed -E 's/^.(…)(…)(…)/u=\1,g=\2,o=\3/g' | # split by triplet sed 's/=—/-rwx/g' | # revoker grants […]

在Linux中configuration虚拟页面大小

我正在testingCPU的硬件预取器。 已知预取发生在页面边界。 我想确保我的testing正确。 任何人都知道我可以如何改变在Linux的虚拟页面大小?

makefile中的$ <和$ ^有什么区别?

makefile中的隐式variables$<和$^有什么区别? 例如: $(LIBS): $(LIB_OBJS) $(CC) $(CFLAG) -shared $< -o $@ 和 $(LIBS): $(LIB_OBJS) $(CC) $(CFLAG) -shared $^ -o $@ 看来结果是一样的。 在我的情况下,我让$(LIBS)和$(LIB_OBJS)每个只有一个文件。

如何重新configuration​​谷歌testing的32位embedded式软件?

我已经设法根据这个安装Googletesting。 我的问题是:我必须testing一个32位操作系统的embedded式软件开发项目,所以我需要重新configurationGoogletesting从64位。 用旧的1.7.0版本知道解决scheme是这样的: autoreconf -fvi ./configure –build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32" make 这是我现在使用新版本的方法: cd home/CWD/googletest/googlemock autoreconf -fvi ./configure –build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32" cd home/CWD/googletest/googletest autoreconf -fvi ./configure –build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32" cd .. mkdir googletest_build cd googletest_build cmake -DCMAKE_INSTALL_PREFIX:PATH=/home/me/googletest ../googletest make make install 这是否是因为我找不到其他地方的configuration文件,除了terminal中显示的结果与1.7.0版本的重新configuration相同。 但使用后: make UTEST=yes project_Name 我得到这个: Linking… project_Name GTEST_LDFLAGS=-L ../../googletest//lib/ -lpthread -lgtest -lgtest_main […]

用日志中的主机名replaceIP

我正在寻找一个bash脚本来读取日志并用主机名replaceIP地址。 有没有人有任何想法如何做到这一点?

在linux下访问堆栈下的内存

该程序访问堆栈下的内存。 我会假设得到一个段错误,或者只是当我走出堆栈界限,但我看到实际的数据。 (这是假设100KB以下的堆栈指针超出了堆栈边界) 还是系统实际上让我看到堆栈下面的内存? 是不是应该有内核级别的保护措施,还是只适用于分配的内存? 编辑: 1024*127下面的字符指针它随机段错误或运行,所以堆栈似乎不是一个固定的8MB,似乎也有一点随机了。 #include <stdio.h> int main(){ char * x; int a; for( x = (char *)&x-1024*127; x<(char *)(&x+1); x++){ a = *x & 0xFF; printf("%p = 0x%02x\n",x,a); } } 编辑:另一个奇怪的事情。 第一个程序segfaults只有1024*127但如果我printf向下远离堆栈我没有得到一个segfault和所有的内存似乎是空的(全0x00 ): #include <stdio.h> int main(){ char * x; int a; for( x = (char *)(&x); x>(char *)&x-1024*1024; x–){ a […]

在terminal使用curl“if”语句?

我正在使用这个命令来获取使用curl的页面的响应代码: curl -s -o /dev/null -w "%{http_code}" 'https://www.example.com' 如果响应代码是200 ,那么我想删除我的电脑上的某个文件。 如果不是200 ,就不应该做任何事情。 什么是最简单的方法来做到这一点?

清空文件是不是在寻找工作

我想清空超过30 MB大小的文件。 我试图用find命令来解决这个问题。 find . -maxdepth 1 -size +32M -exec cat /dev/null > {} \; 和 find . -maxdepth 1 -size +32M -exec echo -n > '{}' \; 但是这两个命令都不会清空文件。而是创build一个文件。 为什么它不清空文件? 为什么它会创build一个名为{} ?的文件。 find命令有什么问题?