有没有办法让gcc输出可用的-march = arch选项?我遇到构建错误(尝试过-march=x86_64),我不知道我的选择是什么。
我使用的编译器是gcc似乎不喜欢的专有包装-march=skylake。标志应该是相同的,因此我假设要发送给gcc的所有选项以转储体系结构对于此包装器来说都是相同的。
我设法使gcc使用伪造的参数出错,并转储了一个列表,但是现在我正在通过包装器,所以我看不到它。
如何让gcc告诉我它支持什么?
我正在写一个小预算脚本来关注我的财务状况.我想记录我的所有交易以及它们何时发生.
目前,我输入支出作为参数:
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)
但我无法想象工作.
我想编写一个生活游戏应用程序,只是为了娱乐/练习。top进程(例如)如何watch重绘屏幕,但不生成全部输出负载(这样当我向上滚动时,它只是一帧,而不是进程生成的每一帧)?
这是依赖于语言的,还是通过操作系统调用完成的?
我想用 C 语言来做,这样我就可以通过添加吃对象的“兔子”来练习内存共享。
我正在为一个没有 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) 我编写了一个小程序来切换设备是否启用,主要是通过热键运行以启用/禁用触摸板,因为我的手在打字时总是碰到它。我用它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) 我正在努力理解这个概念。假设我想运行 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) 我要求由于之前的实现使用了InputStream,我不能用了BufferedReader.
我的测试台使用了a BufferedReader和while循环,如下所示:
while ((line = br.readLine()) != null)
Run Code Online (Sandbox Code Playgroud)
但是br现在必须是InputStream(并且将被重命名).是否有任何方式以这种方式阅读InputStream,或者我是否必须一次读取字节并搜索\n?
我对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* 呢?
我正在使用之前用 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。
如果没有编写一个明确的函数来访问该特定结构的每个字段(只要我想要这样做,就必须这样做),如何将整个结构归零?