Linux

Cross-platform build under Windows targeting Linux using CMake

淺唱寂寞╮ 提交于 2021-02-18 10:50:29
问题 I am developing a software in C++ on windows 32-bit (using MSVC++), but since I want to be able to use my software on every platform, I have decided to use CMake as my build generator. Therefore, I am still just a beginner in CMake. From the CMake tutorials, I understand that in order to cross compile codes, first a toolchain simulating the target platform should be installed on the host platform. Then using the appropriate target-platform C and C++ compilers provided by this toolchain, CMake

Python multiprocessing - Capturing signals to restart child processes or shut down parent process

断了今生、忘了曾经 提交于 2021-02-18 10:49:07
问题 I am using the multiprocessing library to spawn two child processes. I would like to ensure that as long as the parent process is alive, if the child processes die (receive a SIGKILL or SIGTERM), that they are restarted automatically. On the other hand, if the parent process receives a SIGTERM/SIGINT, I want it to terminate all child processes then exit. This is how I approached the problem: import sys import time from signal import signal, SIGINT, SIGTERM, SIGQUIT, SIGCHLD, SIG_IGN from

Linux memory segmentation

ⅰ亾dé卋堺 提交于 2021-02-18 10:48:06
问题 Looking into the internals of Linux and memory management, I just stumbled upon the segmented paging model that Linux uses. Correct me if I am wrong, but Linux (protected mode) does use paging for mapping a linear virtual address space to the physical address space. This linear address space constituted of pages, is split into four segments for the process flat memory model, namely: The kernel code segment ( __KERNEL_CS ); The kernel data segment ( __KERNEL_DS ); The user code segment ( _

2017-2018-2 20179226 《网络攻防》第11周作业

冷暖自知 提交于 2021-02-18 10:45:20
研究缓冲区溢出的原理,至少针对两种数据库进行差异化研究 原理 在计算机内部,输入数据通常被存放在一个临时空间内,这个临时存放的空间就被称为缓冲区,缓冲区的长度事先已经被程序或者操作系统定义好了。向缓冲区内填充数据,如果数据的长度很长,超过了缓冲区本身的容量,那么数据就会溢出存储空间,而这些溢出的数据还会覆盖在合法的数据上,这就是缓冲区和缓冲区溢出的道理。 对抗缓冲区溢出攻击 1、栈随机化   为了在系统中插入攻击代码,攻击者不但要插入代码,还要插入指向这段代码的指针,这个指针也是攻击字符串的一部分。产生这个指针需要知道这个字符串放置的栈地址。在过去,程序的栈地址非常容易预测,在不同的机器之间,栈的位置是相当固定的。 栈随机化的思想使得栈的位置在程序每次运行时都有变化。因此,即使许多机器都运行相同的代码。它们的栈地址都是不同的。 实现的方式是:程序开始时,在栈上分配一段0--n字节之间的随机大小空间。程序不使用这段空间,但是它会导致程序每次执行时后续的栈位置发生了变化。 在Linux系统中,栈随机化已经变成了标准行为。(在linux上每次运行相同的程序,其同一局部变量的地址都不相同) 2、栈破坏检测   在C语言中,没有可靠的方法来防止对数组的越界写,但是,我们能够在发生了越界写的时候,在没有造成任何有害结果之前,尝试检测到它。 最近的GCC版本在产生的代码中加入了一种栈保护者机制

Copy n bytes of data x to file

放肆的年华 提交于 2021-02-18 10:44:30
问题 How we can copy for example 10 bytes of '7' to a file? How can I generate those 10 bytes of 7? For example for n bytes of zero I'm doing dd if=/dev/zero of=myFile bs=1 count=10 . 回答1: You can send the zeros to stdout and translate them to 7, or what ever you like. dd if=/dev/zero bs=1 count=10 | tr "\0" "\7" > file.bin 回答2: redirect an echo output to dd echo 7777777777 | dd of=myFile bs=1 count=10 or echo -e '\x7\x7\x7\x7\x7\x7\x7\x7\x7\x7' | dd of=myFile bs=1 count=10 if you need the binary

Elastic Beanstalk: log task customization on Amazon Linux 2 platforms

血红的双手。 提交于 2021-02-18 10:18:11
问题 I'm wondering how to do log task customization in the new Elastic Beanstalk platform (the one based on Amazon Linux 2). Specifically, I'm comparing: Old : Single-container Docker running on 64bit Amazon Linux/2.14.3 New : Single-container Docker running on 64bit Amazon Linux 2/3.0.0 (My question actually has nothing to do with Docker as such, I'm speculating the problem exist for any of the new Elastic Beanstalk platforms). Previously I could follow Amazon's recipe, meaning put a file into

盘点全球最厉害的 14 位程序员大神,请收下我的膝盖~

巧了我就是萌 提交于 2021-02-18 09:50:08
全球最厉害的14位程序员是谁,您知道的有几位呢? 以下排名不分先后: 1. Jon Skeet 个人名望: 程序技术问答网站Stack Overflow总排名第一的大神,每月的问答量保持在425个左右。 个人简介/主要荣誉: 谷歌软件工程师,代表作有《深入理解C#(C# In Depth)》。 网络上对Jon Skeet的评价: “他根本不需要调试器,只要他盯一下代码,错误之处自会原形毕露。” “如果他的代码没有通过编译的时候,编译器就会道歉。” “他根本不需要什么编程规范,他的代码就是编程规范。” 2. Gennady Korotkevich 个人声望: 编程大赛神童 个人简介/主要荣誉: 年仅11岁时便参加国际信息学奥林比克竞赛,创造了最年轻选手的记录。在2007-2012年间,总共取得6枚奥赛金牌;2013年美国计算机协会编程比赛冠军队成员;2014年Facebook黑客杯冠军得主。截止目前,稳居俄编程网站Codeforces声望第一的宝座,在TopCoder算法竞赛中暂列榜眼位置。 网络上对Gennady Korotkevich的评价: “一个编程神童。” “他太令人惊讶了,他相当于我在白俄罗斯建立了一支强大的编程队伍” “彻底的编程天才” 3. Linus Torvalds 个人名望: Linux之父 个人简介/主要荣誉: Linux和Git之父,一个开源的操作系统;

Get Subnet mask in Linux using bash

风格不统一 提交于 2021-02-18 09:28:09
问题 I am using bash to get the IP address of my machine with that script: _MyGW="$( ip route get 8.8.8.8 | awk 'N=3 {print $N}' )" And now I am trying to get the Subnet Mask in this type: 192.168.1.0/24 But I have no idea how can I do that. 回答1: there are couple of ways to achieve this: first: to print the mask in format 255.255.255.0, you can use this: /sbin/ifconfig wlan0 | awk '/Mask:/{ print $4;} ' second: we can use ip command to get the mask in format 192.168.1.1/24 ip -o -f inet addr show

linux链接及文件互相上传下载

眉间皱痕 提交于 2021-02-18 09:24:44
若排版紊乱可查看 我的个人博客原文地址 基本操作 本篇博客主要介绍如何去链接远程的linux主机及如何实现本地与远程主机之间文件的上传下载操作,下面的linux系统是CentOS6.6 链接远程linux主机 一般链接远程linux主机,如果电脑上没有安装类似SecureCRTPortable这种终端仿真程序,我们会用git的命令窗口使用命令去链接,但是这种方式不能保存链接的用户名和密码,下次还要重新输入链接信息,很麻烦,适合暂时的连一下,用一下,通常都会使用终端仿真程序,并保存相关链接信息。 未安装终端仿真程序链接方式-命令 在任意位置打开git命令窗口,输入如下命令即可 ssh username@ip_or_domain 该命令中username代表linux登录用户的用户名,ip_or_domain代表linux主机的ip地址或ip所映射的域名,例如: ssh root@116.196.115.151 代表的含义是使用root用户链接116.196.115.151的远程主机 之后,一般如果该账户设有密码,会在下一步提示输入链接密码,输入正确密码即可链接成功 安装SecureCRTPortable链接 本地电脑上有SecureCRTPortable这种终端仿真程序(直接浏览器搜索,一堆,本文使用版本为8.3),打开SecureCRTPortable,选择 文件(File)-

全球最厉害的14位程序员,大神收下我的膝盖

冷暖自知 提交于 2021-02-18 09:10:31
导读: 全球最厉害的14位程序员是谁?一起来看下让我们膜拜的这些大神都有哪些? 排名不分先后。 01 Jon Skeet 个人名望: 程序技术问答网站Stack Overflow总排名第一的大神,每月的问答量保持在425个左右。 个人简介/主要荣誉: 谷歌软件工程师,代表作有《深入理解C#(C# In Depth)》。 网络上对Jon Skeet的评价: “他根本不需要调试器,只要他盯一下代码,错误之处自会原形毕露。” “如果他的代码没有通过编译的时候,编译器就会道歉。” “他根本不需要什么编程规范,他的代码就是编程规范。” 02 Gennady Korotkevich 个人声望: 编程大赛神童 个人简介/主要荣誉: 年仅11岁时便参加国际信息学奥林比克竞赛,创造了最年轻选手的记录。在2007-2012年间,总共取得6枚奥赛金牌;2013年美国计算机协会编程比赛冠军队成员;2014年Facebook黑客杯冠军得主。截止目前,稳居俄编程网站Codeforces声望第一的宝座,在TopCoder算法竞赛中暂列榜眼位置。 网络上对Gennady Korotkevich的评价: “一个编程神童。” “他太令人惊讶了,他相当于我在白俄罗斯建立了一支强大的编程队伍。” “彻底的编程天才。” 03 Linus Torvalds 个人名望: Linux之父 个人简介/主要荣誉: