小编aug*_*tin的帖子

我在哪里可以学习如何使C++程序与操作系统(Linux)交互

我是C++初学者.

我想创建与操作系统交互的小程序(使用Kubuntu Linux).到目前为止,我还没有找到任何教程或手册来让C++与操作系统接口.

在PHP中,我可以使用命令exec()或反引号运算符来启动通常在控制台中执行的命令.我怎样才能在C++中做类似的事情?如何让我的C++程序执行任何其他命令?如何获得这些命令的输出?

谢谢.

c++ linux operating-system

7
推荐指数
2
解决办法
2085
查看次数

如何告诉 bash 从自定义位置获取 gettext .mo 文件?

我正在为一个非常具体的项目创建一个 bash 脚本,并且字符串必须是可翻译的。

我已成功遵循以下教程:gettext 支持 bash 脚本: http:
//mywiki.wooledge.org/BashFAQ/098

但是,本教程的一部分要求运行 msgfmt 命令来为每种语言生成已编译的 .mo 文件。为了使其工作,我必须以 root 身份运行该命令,并且 .mo 文件保存在 /usr/share/locale/(lang)/LC_MESSAGES 下。

我希望将 .mo 文件保存在相对于 bash 脚本的子目录中,这很容易。但是,当脚本运行时,bash 必须知道必须在适当的自定义位置查找 .mo 文件。

如何实现这一目标?

我想做的是让整个项目以及 .pot 和 .mo 文件成为独立的,并且能够更新翻译而无需使用 sudo。

linux bash gettext msgfmt

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

CSS:not()选择器是否应该与远程后代一起使用?

以下是CSS3 :not()伪类的官方文档:
http://www.w3.org/TR/css3-selectors/#negation
和CSS Selectors Level 4增强功能:http:
//dev.w3.org/csswg/selectors4 /#否定

我一直在寻找实现和浏览器支持:not(),但我发现的唯一例子是单个元素或元素的直接子元素,例如:

div *:not(p) { color: red; }
Run Code Online (Sandbox Code Playgroud)

上面的例子适用于<p>直接的孩子<div>,但是当它<p>是一个更遥远的后代时它不起作用<div>.

div :not(p) {
    color: red;
}
Run Code Online (Sandbox Code Playgroud)
<div>
    <ul>
        <li>This is red</li>
    </ul>
    <p>This is NOT</p>
    <blockquote><p>This is red but is not supposed to be!</p></blockquote>
</div>
Run Code Online (Sandbox Code Playgroud)

如果答案在上面的官方文档中,那么我没有找到/理解它.正如我所说的,我搜索了这个网站和网站,但找不到任何关于支持或缺乏的讨论:not()作为另一个元素的孙子.

这应该像我认为的那样工作吗?

css css-selectors css3

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

按键被弃用,如何获取用户输入的字符?

keypress不推荐使用javascript事件:https :
//developer.mozilla.org/en-US/docs/Web/API/Document/keypress_event

有些人建议完全依赖keydown事件,例如:
Keydown是我们唯一需要的键盘事件
https://www.mutuallyhuman.com/blog/2018/03/27/keydown-is-the-only-keyboard-event-我们需要/

问题是keydown和keypress不是同义词。至关重要的是,它们在许多/大多数情况下不会返回相同的字符。Keydown表示按下了键盘上的哪个键,而keypress表示用户实际键入的字符。

在英语中,区分大小写很重要:

letter = String.fromCharCode(event.which); 
Run Code Online (Sandbox Code Playgroud)

当按下键盘上的“a”键时,字母是“a”加keypress,但它是“A”加keydown。

JCK 语言的情况变得更加复杂,因为keypress接收正确的国际键盘布局字符,而不是keydown将所有内容转换为单字节字符。

现在在 IME 组合过程中会触发 keydown 和 keyup 事件:https :
//www.fxsitecompat.com/en-CA/docs/2018/keydown-and-keyup-events-are-now-fired-during-ime-composition/

那么,随着keypress被弃用,当我们关心用户打算输入的字符时,我们应该使用什么,考虑大小写、非 ASCII 字符和多字节字符?

相关问题和参考:

keyup 事件总是返回大写字母 => 答案推荐使用keypress.

String.fromCharCode 不适用于 keydown 事件 => 答案建议使用keypress.

keypress 和 keydown 上的 String.fromCharCode 返回错误的字符 => 答案指出keypress和keydown事件不可互换。

替换已弃用的 `keypress` DOM …

javascript keycode keypress keydown

6
推荐指数
0
解决办法
2048
查看次数

如何链接非线程安全库,以便每个线程都有自己的全局变量?

我有一个程序,我链接到许多库.我在profiler上运行我的应用程序,发现在一些网络请求之后大部分时间都花在"等待"状态.这些请求是我sleeping_function()从外部库调用代码的效果.我在循环中调用此函数,该循环执行很多次,因此所有等待时间总计达到大量.

由于我无法修改,sleeping_function()我想启动一些线程并行运行我的循环的几次迭代.问题是这个函数在内部使用了一些全局变量.

有没有办法告诉SunOS上的链接器我想以一种将所有变量放在线程本地存储中的方式链接特定库?

c c++ ssl thread-safety sunos

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

使用boost/format有什么安全隐患?

我开始使用boost/format.

使用boost/format进行编码时,在安全性方面我应该注意什么?

我可以在不关心安全性的情况下执行以下操作吗?

std::cout << boost::format("Hello %2%! Do you want to %1%?") 
    % user_supplied_str1 % user_supplied_str2 << std::endl;
Run Code Online (Sandbox Code Playgroud)

在使用boost/format时,安全性会出现问题的情况是什么?

c++ security format boost

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

Cmake:如何在文件更新时运行bash命令?

我正在尝试编写一个CMakeLists.txt来加速编译.

可执行文件取决于脚本生成的.cpp文件:我使用cppcms Web应用程序库,它具有模板系统,其中.tmpl必须在编译期间转换为.cpp文件,如下所示:

cppcms_tmpl_cc page.tmpl -o page.cpp
Run Code Online (Sandbox Code Playgroud)

有相关问题涉及在cmake中使用bash命令:
如何在编译时在CMake生成的Makefile中运行命令?
CMake:如何在CMakeLists.txt中使用bash命令
这些问题涵盖了我的大多数需求.

我现在要知道的是,每当page.tmpl本身发生变化时,如何告诉cmake运行上面的命令并重新生成page.cpp,然后呢?

目标显然是改进编译时间并使用最新模板获得最新二进制文件.

(主持人可以添加cppcms标签吗?)

[编辑:我实际上是在尝试将以下Makefile转换为cmake:

LIBS=-lcppcms -lconfig++ -lboost_filesystem-mt

all: clean gitbrowser

gitbrowser: main.cpp view.cpp content.hpp gitbrowser.cpp
       $(CXX) -Wall main.cpp gitbrowser.cpp view.cpp -o run ${LIBS}

view.cpp: page.tmpl content.hpp
       cppcms_tmpl_cc page.tmpl -o view.cpp
Run Code Online (Sandbox Code Playgroud)

[编辑2:我在官方cppcms wiki中添加了关于解决方案的说明:
http://art-blog.no-ip.info/wikipp/en/page/cppcms_1x_howto#How.to.compile.the.templates.with . cmake.

cmake cppcms

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

IPv6会帮助形成垃圾邮件发送者吗?

开发Web应用程序的一个主要(主要)部分是使其具有防滥用性,更具体地说是防垃圾邮件.

我刚刚注意到,今天的反垃圾邮件插件管理请求的形式,填写,提交,并重新提交它(例如,在情况下,CMS询问更多信息,表单数据实际上正在前)......所有来自不同IPv4地址.

首先,两个问题:

  • 他们使用什么技术在几秒钟内通过不同的IP路由属于同一会话(表单提交)的不同请求?
  • 我可以编写基于IP的哈希来检查请求表单的IP和提交表单的IP是否相同; 但是:有没有合理的理由说明用户(即不是垃圾邮件制造者)可能想要从不同的IP提交表单而不是请求它的IP?

那么,对于这个问题的关键:

凭借其几乎无限的地址数量,IPv6是否会让垃圾邮件制造者更容易让网站管理员和网络应用程序开发人员的生活变得悲惨?

也许最终用户都拥有自己的静态IPv6,这对我们来说是件好事,因为我们可以更轻松地阻止机器受损的用户.

或者垃圾邮件发送者可以继续从不同角度攻击我们,从不使用相同的IPv6两次...我不太清楚它在技术上如何工作,特别是因为我甚至不了解它如何与IPv4一起工作.

在最高级别的IPv4地址耗尽的那天,问题或多或少地提出了问题.

ipv4 ipv6 spam

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

是否存在具有位置的数据库 - >根据IANA时区数据库的时区名称

在我的脚本(PHP)中,我对数据库中的每个位置使用tz数据库标签:http: //en.wikipedia.org/wiki/Tz_database

我正在进入来自世界各地的一系列地方(国家,省,州,市等).对于每一个地方,我发现很难知道IANA时区数据库中的哪个标签可供使用.

在维基百科上搜索位置给出了时间偏移量(UTC + n)和时区缩写(EST等),但既不能帮助知道在tz数据库中使用哪个条目.

例如:华盛顿特区尽可能地使用"America/New_york".
德克萨斯州达拉斯使用'America/Chicago'(除非我弄错了!)

有一个非洲小国,其首都和最大城市都不在tz数据库中.使用哪个tz条目?

某处必须有一个数据库,或者一个资源可以清楚地将地球上的每个位置(国家,州,省,市等)链接到tz数据库中的特定条目.我在哪里可以找到它?

database timezone iana

5
推荐指数
2
解决办法
2949
查看次数

C++:如何为安全系统调用转义用户输入?

在Linux平台上,我有C++代码,如下所示:

// ...
std::string myDir;
myDir = argv[1]; // myDir is initialized using user input from the command line.
std::string command;
command = "mkdir " + myDir;
if (system(command.c_str()) != 0) {
   return 1;
}
// continue....
Run Code Online (Sandbox Code Playgroud)
  • 将用户输入传递给system()调用安全吗?
  • 用户输入是否应该被转义/消毒?
  • 怎么样?
  • 上述代码如何被用于恶意目的?

谢谢.

c++ linux security escaping

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