【Linux的for循环语句】教程文章相关的互联网学习教程文章

为什么linux内核中的这段代码不会导致死循环?【代码】

我正在阅读关于启动时页表初始化的linux源代码(4.4.45,但在其他版本中应该是相同的),下面的代码让我很困惑. 具体来说,我正在阅读有关early_level4_pgt如何初始化的内容.这是x86_64中代码的一部分,即link is here.leaq level2_kernel_pgt(%rip), %rdileaq 4096(%rdi), %r8/* See if it is a valid page table entry */ 1: testb $1, 0(%rdi)jz 2faddq %rbp, 0(%rdi)/* Go to the next page */ 2: addq ...

linux – 在没有PID的情况下杀死在后台运行的while循环【代码】

我是Linux的一部分的初学者,所以请慢慢来. 我创建了一个在后台运行的“脚本”:while true; do echo "I'm alive" >> alive.log ; done &脚本的输出保存在文件alive.log中,该文件存在于用户的主目录中.问题是我没有想法如何杀死循环因为它填满了我的磁盘空间,如果我想删除该文件,那么循环将创建一个新文件并用“我还活着”文本填充它,因为我问过它要做. 我试过用:ps - aux | grep while要么ps - aux | grep alive 这两行的输出将为...

linux – 用于循环通配符匹配目录的shell脚本【代码】

我试图循环通过匹配通配符的目录.这在命令行中工作正常.但是在Shell脚本中不起作用.任何的想法?for dirs in /var/www/html/my.domain.com/v*; do echo $dirs; done;以上命令列出/var/www/html/my.domain.com/v1.0/var/www/html/my.domain.com/v1.2/var/www/html/my.domain.com/v2.0这是Shell脚本版本.它不起作用:dirs=/var/www/html/my.domain.com/v*for dir in $dirsdoecho "$dir"done试过这个:dirs=`/var/www/html/my.domain....

linux – 什么是同时具有实时循环和非实时功能的更好方法

抱歉标题不好,我真的不知道如何描述… 我的情况是,对于机器人应用程序,我们需要一个实时循环来每1ms控制一次电机.同时我们可能想要做一些没有实时要求的事情,例如路径规划,图像处理,对象识别等.此外,非实时任务的一些结果将被发送到实时电机控制循环来控制机器人. 对于实时部分,我使用Ubuntu和RT-Preempt Patch.因此,我可以在while循环中运行实时控制循环,就像示例代码here一样. 但是,我不知道非实时部分.在我看来,我会在同一个进程...

linux – 操作系统可以重启一个陷入无限循环的进程吗?【代码】

前几天,在Linux服务器上进行测试时,我们观察到在某些情况下,一个进程可能会死亡,然后再次启动.检查代码后,我们发现它是由无限循环引起的. 这引起了我的好奇心,这个过程是如何死亡然后开始的?操作系统是否检测并确定异常进程并重新启动?如果是,那怎么办?解决方法:假设您将无法修复代码……让我们忽略所有疯狂的选项,例如通过脚本附加gdb等. 您可以检查CPU使用率(我已经完成的大多数偶然无限循环使用100%的CPU几小时:)),或者(更可...

linux – 使用Ctrl-C(SIGINT)在Perl中使用系统命令打破while循环?【代码】

考虑以下示例test.pl:#!/usr/bin/env perluse 5.10.1; use warnings; use strict;$SIG{'INT'} = sub {print "Caught Ctrl-C - Exit!\n"; exit 1;};$| = 1; # turn off output line bufferinguse Getopt::Long; my $doSystemLoop = 0;GetOptions( "dosysloop"=>\$doSystemLoop ); print("$0: doSystemLoop is:$doSystemLoop (use " . (($doSystemLoop)?"system":"Perl") . " loop); starting...\n");my $i=0;if (not($doSystemLoop...

linux – 在for循环中排除带有特定前缀的文件名(globbing)【代码】

这可能很容易,但我无法弄清楚.在for循环中,我想要排除带有前缀zz的某些文件(例如zz131232.JPG),但我不知道如何排除这些文件.for i in *.JPG; do# do something done如何修改“for rule”以排除前缀为zz的文件?解决方法:就像是for i in *.JPG; do[[ $i != "zz"* ]] && echo "$i" done或跳过它们:for i in *.JPG; do[[ $i == "zz"* ]] && continue# process the other files here done

linux – 在读取(stdin)循环后暂停bash脚本【代码】

我正在创建一个通过管道(stdin)获取输入的脚本,如(other_command | my_script).但是,在我读完整个标准输入后,我需要暂停脚本并等待用户按下回车键. 这是一个示例脚本.#!/bin/bashif [[ -t 0 ]]; thenecho "No stdin" elseecho "Got stdin"while read input; doecho $inputdone fiecho "Press enter to exit" read它就是这样的;$echo text | ./script Got stdin text Press enter to exit $它跳过我最后的阅读. 然而;$./script No s...

写入Linux设备驱动程序会导致无限循环【代码】

我一直在编写一个可以从用户空间读取和写入的内核空间设备驱动程序.开放,阅读,发布操作都完美无缺.我遇到的问题是应该访问设备驱动程序并向其写入内容的用户空间代码. 用户空间程序写入两个文件:1)到.txt文件(并打印到控制台以让用户知道它已完成),以及2)到设备驱动程序(并且还打印文本以让用户知道它也已完成). 以下是完整的用户空间代码:int main() {FILE *fp;fp = fopen("./test.txt","w");fputs("Test\n", fp);fclose(fp);pr...

c – 在Linux中清除无限循环应用程序的正确方法是什么?【代码】

我来自一个主要的Windows环境,所以我有点失去了转换到在Linux中编写一些东西. 说我有一个简单的C/C++应用程序,如下所示:int main(int argc, char** argv) {int h = open("something");while (true){// do workusleep(10000);}close(h); }在Windows中,我使用类似GetAsyncKeyState()(或其他类型的键盘检查功能)来查找说出转义键,并在按下时退出循环.这样我的关闭(h)就会被调用,我会做我需要的所有清理工作. 我在Linux中终止我的应用...

linux – Makefile在foreach循环中使用ifeq条件【代码】

我有很多变量叫做allow_xxx其中xxx是一个功能. 我想在makefile中创建一个包含所有允许值的变量. 这就是我尝试做的事情:allow_feat1 := 1 allow_feat2 := 1 allow_feat3 := 1 list_features := feat1 feat2 feat3allowed := $(foreach V, $(list_features), $(ifeq ($(allow_$V),1),$V))这不起作用……知道如何正确地做到这一点? 谢谢 !解决方法:没有ifeq函数这样的东西,它只是一个条件指令.使用if和filter代替:allowed := $(fo...

linux – bash:循环procces输出并终止进程【代码】

我需要以下方面的帮助: 我使用linux来编写发送到设备的命令.我需要向设备提交grep logcat命令,然后在生成时迭代其输出并查找特定字符串.找到此字符串后,我希望我的脚本移动到以下命令. 在伪代码中for line in "adb shell logcat | grep TestProccess" do if "TestProccess test service stopped" in line:print lineprint "TestService finished \n"breakelse:print line done解决方法: adb shell logcat | grep TestProcess | wh...

linux – 从while循环中退出shell脚本【代码】

我正在写一个简单的shell脚本,如果在文件中找到输入字符串,则应该以0退出,如果不是,则退出1INPSTR=$1cat ~/file.txt | while read line doif [[ $line == *$INPSTR* ]]; thenexit 0fi done#string not found exit 1实际发生的是当找到字符串时,循环退出,然后shell进入“退出1”.在循环中完全退出shell脚本的正确方法是什么?解决方法:你可以使用$捕获子shell的返回码吗?像这样INPSTR=$1 cat ~/file.txt | while read line do if [...

如何通过从键盘获取任何值来打破Linux上的C循环?【代码】

我正在构建的程序在无限循环中运行,其中包含一个开关盒.我想在每种情况下插入一个while循环并在循环中执行一些操作,但是一旦给出键盘输入,循环就应该退出.因此,在从键盘获取输入之后,另一个案例在其中嵌套了while循环,并且该过程继续. 结构是:while()//infinite loop{............... //operations............... //operationsswitch(){case 1:............... //operations............... //operationswhile()...

分享一个linux系统中循环遍历两个数组内容,并输出数组中的不同内容的shell脚本

cat diffarray.sh#!/bin/bash arry_list1=(1 2 3 4 5 6 7 8 9) arry_list2=(3 5 8)declare -a diff_list t=0 flag=0 echo arry_list1=${arry_list1[@]} echo arry_list2=${arry_list2[@]}for list1_num in "${arry_list1[@]}" doecho list1_num is ${list1_num}for list2_num in "${arry_list2[@]}"doecho list2_num is ${list2_num}if [[ "${list1_num}" == "${list2_num}" ]]; thenflag=1breakfidoneif [[ $flag -eq 0 ]]; thend...