我对迅捷是全新的.它刚刚作为Linux的开源发布,我想尝试一下.这是在ubuntu 14.04上.clang按先决条件安装.
<Edit>:这里要求clang版本3.6也在ubuntu 14.04上.我先用clang 3.4尝试了这些第一步,但是按照链接中的说明更新到3.6并重试了.结果相同.</Edit>
我已经下载了https://swift.org/builds/ubuntu1404/swift-2.2-SNAPSHOT-2015-12-01-b/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04.tar.gz到〜/ Downloads /.安装脚本和swift的第一步:
$ cd /tmp
$ tar xf ~/Downloads/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04.tar.gz
$ PATH=/tmp/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/bin/:"$PATH"
$ clang++ --version
Ubuntu clang version 3.6.0-2ubuntu1~trusty1 (tags/RELEASE_360/final) (based on LLVM 3.6.0)
Target: x86_64-pc-linux-gnu
Thread model: posix
$ which swift
/tmp/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/bin//swift
$ swift --version
Swift version 2.2-dev (LLVM 46be9ff861, Clang 4deb154edc, Swift 778f82939c)
Target: x86_64-unknown-linux-gnu
$ swift
Welcome to Swift version 2.2-dev (LLVM 46be9ff861, Clang 4deb154edc, Swift 778f82939c). Type :help for assistance.
1> 1 + 2
opening …Run Code Online (Sandbox Code Playgroud) 假设我的程序在Linux机器上运行,该机器已正确配置为处理闰秒.如何完成配置(NTP,配置文件)应与此问题无关.
实际上,内核将在月末插入额外的秒或跳过一秒钟.这对gettimeofday(2)读取的时间值有影响.重复或跳过该月的最后一个UTC秒.这里列出了闰秒期间的示例读数.
我的问题:如何在C/C++程序中找出闰秒是否会在月末发生,以及在哪个方向发生.那么如何在linux上实现以下功能呢
int leap_seconds_scheduled_for_end_of_month() {
if (/*kernel_will_insert_extra_second?*/)
return 1;
if (/*kernel_will_skip_over_last_second?*/)
return -1;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果月末很远,结果是不正确的,这是可以的.(远远地,为了我的目的,是> = 2秒)答案必须是正确的(*)在可能的闰秒之前的最后一秒,即在该月的最后一天的23:59:58 UTC.如果我在发生闰秒后了解闰秒是不够的,因为我必须提前做好准备.
我一直试图在sysfs或procfs中找到任何闰秒指标,但到目前为止都没有成功.
(*)当然,如果内核本身在它发生之前只知道闰秒的一小部分,例如由于整个上个月中NTP服务的中断,那么答案就不正确了.没关系.
Groovy的2.4版本附带了对Android应用程序开发的官方支持http://docs.codehaus.org/display/GROOVY/Groovy+2.4+release+notes.
以前使用eclipse进行Android开发,没有使用Android Studio或使用Gradle的经验,现有的使用Android Studio设置常规android项目的说明(例如http://docs.groovy-lang.org/docs/next/ html/documentation/tools-groovyc.html#section-android,https://github.com/groovy/groovy-android-gradle-plugin,或http://hosain.net/2015/02/07/getting-started -with-android-development-using-groovy-2.4-and-android-studio.html)太模糊了,不适合我,而且他们使用的版本号的差异令人困惑.
我想看看适用于Android的Android Studio 1.2.1.1的详细分步说明,并解释如何确定版本号.
在 docker 容器内执行的 php 应用程序
docker run -d -v "./app:/app" php:fpm
Run Code Online (Sandbox Code Playgroud)
抱怨 post_max_size (8MB) 的默认值太小,我应该将其增加到 32MB。
问题是,该 docker 镜像中没有 php.ini:
# ls -R /usr/local/etc/
/usr/local/etc/:
pear.conf php php-fpm.conf php-fpm.conf.default php-fpm.d
/usr/local/etc/php:
conf.d
/usr/local/etc/php/conf.d:
docker-php-ext-mysqli.ini docker-php-ext-pcntl.ini docker-php-ext-sodium.ini
/usr/local/etc/php-fpm.d:
docker.conf www.conf www.conf.default zz-docker.conf
Run Code Online (Sandbox Code Playgroud)
当我附加post_max_size = 32M到 /usr/local/etc/php-fpm.d 下的任何文件时,容器在启动期间停止并显示错误消息
[22-Aug-2018 01:38:09] ERROR: [/usr/local/etc/php-fpm.d/www.conf:424] unknown entry 'post_max_size'
[22-Aug-2018 01:38:09] ERROR: Unable to include /usr/local/etc/php-fpm.d/www.conf from /usr/local/etc/php-fpm.conf at line 424
[22-Aug-2018 01:38:09] ERROR: failed to load configuration file '/usr/local/etc/php-fpm.conf'
[22-Aug-2018 01:38:09] ERROR: FPM …Run Code Online (Sandbox Code Playgroud) 设想:
可执行文件在运行时通过 dlopen 加载共享对象。
共享对象引用了一些实际编译到主可执行文件中的符号(一个函数)。
如果我在链接可执行文件时将 -rdynamic 添加到 gcc,这可以正常工作。
-rdynamic 导出可执行文件的所有非静态符号。我的共享对象只需要少数几个。
问:有没有办法达到-rdynamic的效果,但是限制了我知道的共享对象需要的几个select符号?
编辑:
至少有两个人误解了这个问题,所以我试图澄清:
这个问题是关于从主可执行文件导出一个符号。
这个问题与从动态库中导出符号无关。
这是一个最小的例子:
func.h,通用头文件
#include <stdio.h>
void func(void);
Run Code Online (Sandbox Code Playgroud)
main.c,主要的可执行代码:
#include <dlfcn.h>
#include "func.h"
// this function is later called by plugin
void func(void) {
printf("func\n");
}
int main() {
void * plugin_lib = dlopen("./plugin.so", RTLD_NOW);
printf("dlopen -> %p, error: %s\n", plugin_lib, dlerror());
// find and call function "plugin" in plugin.so
void (*p)(void); // declares p as pointer to function
p = dlsym(plugin_lib, "plugin");
p(); …Run Code Online (Sandbox Code Playgroud) 在 C 或 C++ 中,在 Linux 上,我想以系统内存页面大小的整页来分配堆内存。
(目的是我想增加有害缓冲区溢出导致分段错误的可能性。)
当我使用 C++ 数组 new ( pointer = new char[size]) 分配内存时,其中大小是 的倍数sysconf(_SC_PAGESIZE),那么分配的内存的(虚拟)地址通常不会是 的倍数sysconf(_SC_PAGESIZE),这表明我已经得到了较大块的子集,已确认事实上,写入指针 [size] 并稍稍超出(强制缓冲区溢出)通常不会导致分段错误。
我的问题是,我能否以某种方式影响内存分配以提供完整的内存页面。
我感兴趣的处理器架构是 x86_64 又名 amd64。操作系统是最新的Ubuntu,或稳定的CentOS Linux(7.3),后者配备内核3.10和gcc-4.8。
我不关心解决方案是 C 还是 C++,因此我要求在这个问题中保留 C 标签。
我正在使用 gcov/lcov 进行 googletest 单元测试的覆盖率分析。
一个反复出现的问题是,当宏分布在几行上时,覆盖率报告会显示一些 googletest 宏的测试代码中未覆盖的行。
我知道 gov/lcov 不能比单行更准确,但我对我看到的行为感到困惑。有人可以解释一下吗?最小的例子:
#include <gtest/gtest.h>
TEST(coverage,incomplete)
{
// Every second line in every invocation here will show up as uncovered:
EXPECT_NO_THROW(40 +
2);
EXPECT_NO_THROW(40 + 2
);
EXPECT_NO_THROW(40 + 2)
;
}
TEST(coverage,complete)
{
// This test does not show uncovered lines
EXPECT_NO_THROW(40 + 2);
EXPECT_EQ(40
+
2
, // even though this is spread over several lines
42
)
;
}
Run Code Online (Sandbox Code Playgroud)
如何进行覆盖分析:
g++-4.8 -Igtest/googletest/include/ --coverage -o coverage_macropp coverage_macropp.cpp gtest/googletest/make/gtest_main.a -pthread
./coverage_macropp …Run Code Online (Sandbox Code Playgroud) 它可以有一个强制执行以下语义的函数参数:
该功能不会更改该参数.调用该函数永远不会为参数创建复制或临时对象.
例:
void f(const std::string & str);
Run Code Online (Sandbox Code Playgroud)
接口告诉客户端参数不会被更改,如果参数已经是std :: string类型,则不会创建副本.
但它仍然可以称之为
const char * hello = "hello";
f(hello);
Run Code Online (Sandbox Code Playgroud)
在输入函数f之前创建一个临时的std :: string对象,并在退出f后再次销毁它.
是否可以通过不同的函数声明或(假设)改变std :: string实现来禁止它.
在尝试解锁屏幕时,我不小心将密码输入到运行 fish shell 的终端中。
如何再次从鱼的命令历史记录中删除它?
该解决方案不需要在取证上是安全的。备份文件或驱动器上留下的痕迹对我来说很好。我只是想避免例如当我在共享时使用鱼的历史记录时我的密码在屏幕共享会话中意外弹出。而且我想在历史中保留所有其他命令,因为我经常从历史中回忆复杂的命令,有时在重用之前对其进行编辑。
我一定错过了一些明显的东西:
我想为vi添加一个二维数组的指标.显示屏应有2列和20行,以显示20x2 uint16数组.
当我创建一个数组视图并添加一个数字指示器时,我可以通过使用鼠标扩展数组来扩展数组,但它只保持水平或垂直方向的1维.
这是Linux上的Labview 2016.我错过了什么?
I would like to mock free C functions from a 3rd-party library. I know googlemock recommends to wrap the functions as methods in an interface class.
Some C functions expect void* parameters, the interpretation of which depends on context. In one test case, a 0-terminated string is used for a void* parameter.
In the mock object, I would like to check the string's content, when it was transmitted as a void*. When I try to use StrEq to check the …