Articles of recursion

创build一个进程树

下面的程序应该在每个节点上创build具有N个子节点的深度为K进程树。 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> void spawnNodes(int curLevel, int levelLimit, int childrenNumber, int nodeNumber, int offset) { if (curLevel == levelLimit) exit(0); curLevel++; printf("(%d, %d) Pid: %d with parent %d\n", curLevel, nodeNumber, getpid(), getppid()); for (int i = 0; i < childrenNumber; i++) { pid_t childPid = fork(); if […]

通过文件扩展名将文件recursion复制到远程服务器

我想将所有文件*.txt复制到远程服务器。 我试过了: find . -name '*.txt' -exec scp {} user@server:directory ";" 但每次find文件时都ask for the password 。 你有什么想法做得更好? 非常感谢你。

bash删除较旧的文件

我有这个独特的要求,find2年以前的文件,并删除它们。 但不仅是文件以及相应的空目录。 我已经写了大部分的逻辑,但只有仍然悬而未决的是,当我从一个目录中删除特定的文件时,如何删除相应的目录,当它是空的。 当我删除特定的文件时,ctime / mtime也会相应地得到更新。 我如何定位那些相应的旧目录并删除它们? 任何指针都会有所帮助。 提前致谢。 pipe理员

覆盖malloc,free和calloc会导致在Linux中recursion

我已经在Linux平台上覆盖了函数malloc , calloc和free函数,如下所示: #include <stdio.h> #include <dlfcn.h> #include <stdlib.h> typedef void* (*MALLOCFN)(size_t); typedef void* (*CALLOCFN)(size_t, size_t); typedef void* (*CALLOCFN)(size_t, size_t); typedef void (*FREEFN)(void *); MALLOCFN real_malloc = (MALLOCFN) 0; CALLOCFN real_calloc = (CALLOCFN) 0; FREEFN real_free = (FREEFN) 0; void *get_realfn(const char *fnm) { void *pfunc = (void *) NULL; printf("searching for original %s\n", fnm); […]

减lessdebugging会话中的堆栈大小,以捕捉无穷的recursion

我有一个algorithm,“有时”不会中断recursion,并在堆栈溢出结束。 现在我想debugging这种情况。 gdb直接指向我覆盖堆栈寄存器的那一行,但是不可能得到堆栈跟踪,因为gdb需要无尽的时间来展开堆栈并将其显示在ddd中。 我现在只是想减less堆栈大小,以早日获得腐败。 所以我需要一种方法来减less为我的运行任务堆栈。 没有涉及的线程,所以不应该这么大。 但我不知道如果gdb本身有一个操纵堆栈(大小)本身的选项,或者我需要编程改变我的编程开始时的大小,或者我可以减less从OS命令行(linux)开始后的大小debugging会话。 如果gdb有这样一个选项,如果调用树达到最大深度,也许也可以停止。

从文件path反向获取目录path

假设我有一个文件名/A/B/C/d.txt, 我想要反向打印目录path, /A/B/C/ /A/B/ /A/ 下面是一个使用recursion来反向打印目录path的程序。 #include <stdio.h> #include <libgen.h> #include <string.h> #include <stdlib.h> void parsepath(const char *dirpath) { char* dirPathTemp; char* dirname; char path[255]; dirPathTemp = strdup(dirpath); dirname = dirname(dirPathTemp); strcpy(path, dirname); free(dirPathTemp); printf("path = %s\n", path); if (0 != strcmp(path, "/")) parsepath(path); } int main(int argc, char *argv[]) { parsepath("/A/B/C/d.txt"); return 0; } […]

Linux bash脚本,添加数字的recursion

我想知道如何recursion在bash脚本中工作。 我想插入数字作为参数: sh script.sh 4 结果是(1 + 2 + 3 + 4)= 10 这是我写的,在我的脑海里工作得很好,但是不能工作。 n=$1 j=1 result=0 recursion(){ result=`expr $result + $j` j=`expr $j + 1` if [ "$n" -gt 0 ]; then recursion #is this how you do recursion? n=`expr $n – 1 else echo $result fi } recursion 我想我想像的是对的,但可能我错了。

Linux – 将所有文件夹重命名为目标中较高的文件夹

我在linux机器上有一个文件夹(可以说它的名字是../TEMPO ),里面有许多文件夹[A,B,C..Z]。 每个文件夹有三个级别的文件夹。 某些较深的文件夹名称为小写,例如: A/F/m/O Z/t/q/S 在第四级有一些文件,我想保持与现在一样的名字。 我怎样才能重新命名只是文件夹名称大写recursion,而不改变文件名称存在于一个特定的文件夹( ../TEMPO )?

在linux中列出目录时无限recursion

我尝试写程序,其中部分列出所有目录(尤其是从/开始),但我有一个问题/ proc /自我是无限recursion的(我得到/ proc /自我/任务/ 4300 / fd / 3 / proc / self / task / 4300 / fd / 3 / proc / self / task / 4300 / fd / 3 / proc / …等等)。 什么是处理它的好方法? 编辑:程序是用C语言编写的,我使用opendir(),readdir()

在mempcpy for循环中串行构造一个string导致无穷recursion

下面的代码片断是我目前正在处理的代码的简化。 它的目的是构造一个输出string,通过串联string构造。 #define _GNU_SOURCE #include <argp.h> #include <stdlib.h> #include <stdio.h> #include <stdbool.h> #include <float.h> #include <math.h> #include <string.h> int main(void) { char *english[] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; char *l_english = malloc(5*sizeof(char)*10+10+1); char *ptr_eng = l_english; for(int i = 0; i<10; i++){ ptr_eng = mempcpy(ptr_eng,english[i],strlen(english[i])); printf("Iteration %d\n",i); } free(l_english); […]