小编Bry*_*son的帖子

我可以使用哪些进行曲/音乐选择?

有没有办法让gcc输出可用的-march = arch选项?我遇到构建错误(尝试过-march=x86_64),我不知道我的选择是什么。

我使用的编译器是gcc似乎不喜欢的专有包装-march=skylake。标志应该是相同的,因此我假设要发送给gcc的所有选项以转储体系结构对于此包装器来说都是相同的。

我设法使gcc使用伪造的参数出错,并转储了一个列表,但是现在我正在通过包装器,所以我看不到它。

如何让gcc告诉我它支持什么?

x86 command-line gcc compiler-flags micro-architecture

6
推荐指数
2
解决办法
1517
查看次数

添加时间戳到tee'd输出,但不是原始输出

我正在写一个小预算脚本来关注我的财务状况.我想记录我的所有交易以及它们何时发生.

目前,我输入支出作为参数:

f)
    echo "$OPTARG spent on food" | tee spendinglogs.log
    ... # take away money from monthly budget
    echo "$REMAINING_FOOD_BUDGET remaining" | tee spendinglogs.log

m)
    echo "$OPTARG spent on miscellaneous" | tee spendinglogs.log
    ... # take away money from monthly budget
    echo "$REMAINING_MISC_BUDGET remaining" | tee spendinglogs.log

... #etc
Run Code Online (Sandbox Code Playgroud)

我不想将输出时间戳到终端,但我确实想要将输出时间戳到日志.有没有办法做到这一点?

例如

echo "$OPTARG spent on food" | tee `date %d-%m-%y %H_%M_%S` spendinglogs.log
Run Code Online (Sandbox Code Playgroud)

但我无法想象工作.

bash tee

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

重绘终端的程序如何工作?

我想编写一个生活游戏应用程序,只是为了娱乐/练习。top进程(例如)如何watch重绘屏幕,但不生成全部输出负载(这样当我向上滚动时,它只是一帧,而不是进程生成的每一帧)?

这是依赖于语言的,还是通过操作系统调用完成的?

我想用 C 语言来做,这样我就可以通过添加吃对象的“兔子”来练习内存共享。

c terminal

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

创建一个不解释任何内容的 heredoc

我正在为一个没有 bash 经验的朋友写一个脚本。该脚本生成备份脚本,生成 crontab 并运行 crontab 以创建 cron 作业。

我想确定这些备份的日期,因此当前脚本(相关内容)是:

cat <<EOF > ~/scheduledBackups/scripts/finalCutScript.bash
mkdir -p ~/scheduledBackups/FinalCut-`date +%a-%b-%d-%Y_%H`
cp -r $BACKUP_DIR/* ~/scheduledBackups/FinalCut-`date +%a-%b-%d-%Y_%H`
EOF
Run Code Online (Sandbox Code Playgroud)

但是,这会finalCutScript.bash与运行“安装程序”脚本时的日期一起生成。

有没有办法把那个 heredoc 准确地放在里面finalCutScript.bash?我想将所有内容都保存在一个脚本中,以便以后可以使用此脚本框架。

细化

预期行为:

我希望将heredoc 传送到其中的文件包含

mkdir -p ~/scheduledBackups/FinalCut-`date +%a-%b-%d-%Y_%H`
cp -r $BACKUP_DIR/* ~/scheduledBackups/FinalCut-`date +%a-%b-%d-%Y_%H`
Run Code Online (Sandbox Code Playgroud)

实际行为

该heredoc生成的文件包含

mkdir -p ~/scheduledBackups/FinalCut-Fri-Aug-05-2016_16
cp -r ~/Documents//* ~/scheduledBackups/FinalCut-Fri-Aug-05-2016_16
Run Code Online (Sandbox Code Playgroud)

linux bash heredoc

3
推荐指数
1
解决办法
412
查看次数

从 xinput -list 仅获取设备名称

我编写了一个小程序来切换设备是否启用,主要是通过热键运行以启用/禁用触摸板,因为我的手在打字时总是碰到它。我用它notify-send来创建一个对话框,但是我目前所能做的就是说

device $1 has been enabled
Run Code Online (Sandbox Code Playgroud)

xinput 列表的输出如下所示:

? Virtual core pointer                      id=2    [master pointer  (3)]
?   ? Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
?   ? Atmel Atmel maXTouch Digitizer            id=10   [slave  pointer  (2)]
?   ? ETPS/2 Elantech Touchpad                  id=14   [slave  pointer  (2)]
? Virtual core keyboard                     id=3    [master keyboard (2)]
    ? Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ? Power Button                              id=6    [slave  keyboard (3)]
    ? Video Bus                                 id=7    [slave  keyboard (3)]
    ? Power …
Run Code Online (Sandbox Code Playgroud)

bash

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

在 c 中处理多个 fork()

我正在努力理解这个概念。假设我想运行 3 个并发进程(线程不是一个选项,这是一个分配)。

我会做:

int main(){
    fork();
    if (getPid() == -1) { //this is the parent
        fork(); //make a third process
    } else if (getPid() == 0) { //child process
    //do child things
    }
Run Code Online (Sandbox Code Playgroud)

所以从我了解到的父 pid 是 -1。有两个孩子,PID 都是 0?

那么“父母”可以产生尽可能多的孩子,对吗?他们都会做孩子的事情。

如果我想做 3 件不同的事情怎么办?我如何跟踪 PID 以便我有 3 个独特的?

根据评论 - 这是如何完成的?

pid_t child2Pid;
pid_t child1Pid = fork();
switch /*if getPid is wrong what do I put here?*/ {
case -1: //parent
    child2Pid = fork(); //create another child
case child1Pid : …
Run Code Online (Sandbox Code Playgroud)

c

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

使用InputStream读取文件的一行

我要求由于之前的实现使用了InputStream,我不能用了BufferedReader.

我的测试台使用了a BufferedReader和while循环,如下所示:

while ((line = br.readLine()) != null)
Run Code Online (Sandbox Code Playgroud)

但是br现在必须是InputStream(并且将被重命名).是否有任何方式以这种方式阅读InputStream,或者我是否必须一次读取字节并搜索\n

java inputstream

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

为什么 strtok 对 const 发出警告?

我对strtok的理解是它返回一个指向char数组(char*)中第一个分隔符的指针。

我收到针对 const char* 作为参数的警告,但我不明白为什么这很重要 - strtok 根本不修改参数。

我的理解:

const char* mystring = "this, is a test";
char* endstring = strtok(mystring, ',');
char* newstring = strdup(endstring);
printf("started with: %s\n now have: %s\n", mystring, newstring);
Run Code Online (Sandbox Code Playgroud)

应打印

started with: this, is a test 
now have: , is a test
Run Code Online (Sandbox Code Playgroud)

mystring 完全未受影响,当然,我有一个指向其中一半的指针,但这并不重要。那么为什么 strtok 抱怨我向它发送了一个 const char* 呢?

c string

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

如果无法使用 memset,如何清除结构?

我正在使用之前用 clang++ 编译的一段 C++ 代码(针对 x86)。在转换为 gcc 时,我在以下行中看到错误:

    memset(tracking, 0, sizeof(dbg_log_tracking_t));
Run Code Online (Sandbox Code Playgroud)

我知道我不能 memset 一个“非平凡”(编译器的话)类,或者带有 vtable 的东西,但这是一个struct,它是一个内存块,仅此而已,但在编译时,g++ 告诉我,我无法清除非平凡类型的对象。

我得到一个指针作为缓冲区,我将从 phy 中将数据读入该缓冲区,然后使用该结构进行解包。在读取完成之前需要将该结构清零。

在C语言中,我可以高兴地搬起石头砸自己的脚。如果我愿意的话,我可以将 main() 设置为 null,但令人沮丧的是我在这里不能这样做。

我能想到的唯一解决方案是保留这个已经归零的结构的静态实例,然后将其memcpy过来,但这看起来就像是带有额外步骤和浪费内存的memset。

如果没有编写一个明确的函数来访问该特定结构的每个字段(只要我想要这样做,就必须这样做),如何将整个结构归零?

c++ memcpy

-1
推荐指数
1
解决办法
638
查看次数