Articles of Linux操作系统

Big Endian和Little Endian支持字节sorting

我们需要支持3个硬件平台–Windows(小端)和Linux Embedded(大端和小端)。 我们的数据stream取决于它使用的机器,数据需要分解成位域。 我想写一个macros(如果可能的话)来抽象出细节。 在Linux上,我可以使用bswap_16 / bswap_32 / bswap_64进行Little Endian转换。 但是,我无法在我的Visual C ++包含中find这个。 是否有两个平台(Windows和Linux)的通用内置? 如果没有,那么我可以在Visual C ++中使用什么来做字节交换(除了自己写的 – 希望一些机器优化的内置)? 谢谢。

recursion地“规范化”文件名

我的意思是摆脱特殊字符的文件名等 我已经做了一个脚本,可以recursion重命名文件[http://pastebin.com/raw.php?i=kXeHbDQw]: 例如:之前: THIS is my file (1).txt 运行脚本之后: This-is-my-file-1.txt 好。 这里是: 但是:当我想要“完全”testing它,像这样的文件名: ¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÂÃÄÅÆÇÈÊËÌÎÏÐÑÒÔÕ×ØÙUÛUÝÞßàâãäåæçèêëìîïðñòôõ÷øùûýþÿ.txt áíüűúöőóéÁÍÜŰÚÖŐÓÉ!"#$%&'()*+,:;<=>?@[\]^_`{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ''“”•–—˜™š›œžŸ¡¢£.txt 它失败[http://pastebin.com/raw.php?i=iu8Pwrnr]: $ sh renamer.sh directorythathasthefiles mv: cannot stat `./áíüűúöőóéÁÍÜŰÚÖŐÓÉ!"#$%&\'()*+,:;<=>?@[]^_`{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ''“”•–—˜™š›œžŸ¡¢£': No such file or directory mv: cannot stat `./áíüűúöőóéÁÍÜŰÚÖŐÓÉ!"#$%&\'()*+,:;<=>?@[]^_`{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ''“”•–—˜™š›œžŸ¡¢£': No such file or directory mv: cannot stat `./áíüűúöőóéÁÍÜŰÚÖŐÓÉ!"#$%&\'()*+,:;<=>?@[]^_`{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ''“”•–—˜™š›œžŸ¡¢£': No such file or directory mv: cannot stat `./áíüűúöőóéÁÍÜŰÚÖŐÓÉ!"#$%&\'()*+,:;<=>?@[]^_`{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ''“”•–—˜™š›œžŸ¡¢£': No such file or […]

将PHP升级到版本7后,为什么我不能使用mongodb驱动程序?

那么我发现这是一个奇怪的情况。 我一直在一个项目上使用PHP和MongoDB,并更新了相关的软件。 升级之后,我确实更新了新的conf文件,一切都很好 – 除了当我尝试使用MongoClient类时,我得到以下致命错误: 致命错误:未捕获错误:类'MongoClient'在/srv/http/test.php中找不到 所以我的第一本能是检查我的/etc/php/php.ini ,确保mongodb.so被正确包含。 我发现它在其他的extension线之后: extension=mcrypt.so extension=zip.so extension=mongodb.so ; <— here it is 通过检查,我加载了一个快速的phpinfo()脚本来检查我是否使用了正确的php.ini文件,并确认我是。 不仅如此,mongodb驱动程序也似乎正确加载! Loaded Configuration File /etc/php/php.ini . . . mongodb support enabled mongodb version 1.1.1 mongodb stability stable libmongoc version 1.3.1-dev libbson version 1.3.0 所以我重新启动httpd并再次尝试。 没有骰子,仍然找不到MongoClient类。 所以我试图从pecl而不是我的发行版的包pipe理器来安装它,情况和上面描述的一样。 所以这里是一个简短的情况: Linux内核4.3.3 PHP版本7.0.1 php-mongodb版本1.1.1 是的, 1.1.1支持php7 。 似乎configuration正确,mongodb已启用并显示在phpinfo() 。 试过通过pecl和我的发行版软件包pipe理器来安装mongodb驱动程序。 其他信息可能是有用的: […]

X11 EvDev触摸屏驱动程序:禁用长按右键单击桌面上

我正在设置一个自助服务terminal系统,在启动时自动加载一个网页。 标准的东西。 问题是一个macros碁的触摸屏,与evdev驱动程序工作正常,但它的工作有点太好了。 如果用户按下并按住屏幕,则会生成右键单击,并出现上下文菜单。 这导致接口的一些问题,我需要禁用此function,但我还没有find一种方法来做到这一点呢。 X11configuration文件不是我有很多经验的东西。 有没有人有任何经验摆脱这个function? 是否可以将触摸屏映射到通用鼠标驱动程序? 系统是: – Ubuntu的伴侣15.04 – 树莓派2 – 窗口pipe理器:火柴盒 – 浏览器:铬 到目前为止,我已经对/usr/share/X11/xorg.conf.d中的10-evdev.conf文件进行了以下更改 Section "InputClass" Identifier "evdev touchscreen catchall" MatchIsTouchscreen "on" MatchDevicePath "/dev/input/event*" Driver "evdev" **Option "ButtonMapping" "1 0 0 0 0" Option "Emulate3Buttons" "False" Option "EmulateWheel" "False" Option "EmulateThirdButton" "False" Option "EmulateThirdButtonTimeout" "100000" Option "EmulateThirdButtonMoveThreshold" "0"** EndSection 它没有任何影响正在生成的右键单击事件或上下文菜单出现。 但是,如果我把: […]

识别连接到Unix域套接字的程序

我有一个正在侦听Unix域套接字的程序。 当客户端连接到套接字时,我想知道连接了哪个程序,然后决定是否允许连接(基于用户/组设置)。 这是可能的在Linux下,如果是这样,怎么样?

Linux fork / exec到同一个目录下的应用程序

是否有一个exec变体,将使用当前的应用程序目录来定位目标程序? 我正在使用C ++和Qt来实现“最后的沟渠”错误报告系统。 使用Google Breakpad ,我可以创build一个小型转储并直接执行到一个处理程序。 因为我的应用程序处于不稳定状态,所以我只想使用最小的依赖关系来分叉并启动一个单独的error handling过程。 错误报告应用程序将被部署在与应用程序可执行文件相同的目录中。 我很不熟悉fork和exec选项,并且没有find包含searchpath中当前应用程序目录的exec选项。 这是我到目前为止: static bool dumpCallback(const char* /*dump_path*/, const char* /*minidump_id*/, void* /*context*/, bool succeeded) { pid_t pid = fork(); if (pid == 0) { // This is what I would *like* to work. const char* error_reporter_path = "error_reporter"; // This works, but requires hard-coding the entire […]

有没有办法改变vim的默认模式

有谁知道如何改变VIM的默认模式? 它的默认模式是命令模式,但我可以改变它插入模式?

打开文件后,访问时间不会更改

我正在使用stat来获取文件的存取时间(当前date是2013年10月23日) [juan@JN-LNXSVR-02 labfiles]$ stat nursery File: `nursery' Size: 837 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 139539 Links: 1 Access: (0644/-rw-r–r–) Uid: ( 500/ juan) Gid: ( 500/ juan) Access: 2013-10-22 18:03:20.703888346 -0400 Modify: 2013-10-21 16:57:07.801165793 -0400 然后我编辑文件并closures它,不做任何修改,并再次提交stat juan@JN-LNXSVR-02 labfiles]$ vi nursery [juan@JN-LNXSVR-02 labfiles]$ stat nursery File: `nursery' Size: 837 Blocks: 8 […]

飞镖扔在linux上的错误:GLIBC_2.14 GLIBC_2.15找不到

我在Google Compute Engine上运行Debian 7.2(尽pipe我怀疑Centos,Red Hat和Amazon Linux AMI都有相同的问题)。 在从这个页面下载64位Linux版本的Dart SDK之后,我运行的任何dart命令(例如dart –version )将会输出以下错误: ./editor/dart/dart-sdk/bin/dart: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.15' not found (required by ./editor/dart/dart-sdk/bin/dart) ./editor/dart/dart-sdk/bin/dart: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by ./editor/dart/dart-sdk/bin/dart)

在不同的执行过程中保持FIFO可读

我从来没有使用过一个命名pipe道,最近才意识到这正是我所需要的。 我正在运行一个使用gnu parallel的程序,这个程序可能会产生为mySQL上的一个数据库格式化的输出(GB到1TB,现在很难知道)。 我发现我可以打开两个terminal:terminal1得到如下的东西: find . -type f -name "*.h" | parallel –jobs 12 'cprogram {}' > /home/pipe 在哪里pipe道是由mkfifo制成的fifo。 在第二个terminal上,我运行一个类似这样的命令: mysql DataBaseName -e "LOAD DATA LOCAL INFILE '/home/pipe' INTO TABLE tableName"; 有用… 但是,这很笨拙…如果我理解正确,第一个过程结束时会产生一个EOF,导致pipe道closures。 理想情况下,我想在不同参数的循环中运行第一个进程。 每次迭代可能需要很长时间,我需要进行合理性检查,所以我不会松懈一周,以查明是否有错误或逻辑错误。 我想知道如何以标准的方式使用FIFO这种程序。