Articles of 进程

从C的议论到议会

我试图用C语言编写一个使用Assembly的函数的程序。 下面你可以看到代码: sum_c.c #include <stdio.h> extern int _assemblySum(int x, int y); int main(int argc, char *argv[]){ int total; total = _assemblySum(4, 2); printf("%d\n", total); return 0; } assembly_Sum.asm SECTION .DATA SECTION .TEXT GLOBAL _assemblySum _assemblySum: push rbp mov rbp, rsp mov rax, [rbp+16] mov rbx, [rbp+24] add rax, rbx pop rbp ret COMPILE nasm -f […]

以编程方式获取给定PID的subprocess列表

我希望得到给定PID的所有直接孩子的列表。 我可以使用/proc但是/proc/<PID>/task/<PID>/children不是很精确,可能会返回不准确的结果( 参见3.7节 )。 我想要一个更可靠的方法来做到这一点。 我不想使用shell命令的包装。

2线程在Linux中并行

我刚开始实现线程。 我想要创build1个主线程和2个并行线程。 这是我的代码: #include <stdio.h> #include <pthread.h> #include <glib.h> #include <time.h> #define THREAD1 1 #define THREAD2 2 GMainLoop *loop1; GMainLoop *loop2; pthread_t pth1; // this is our thread identifier pthread_t pth2; // this is our thread identifier gboolean timeout_callback1(gpointer data){ clock_t start = clock(); int msec = start * 1000 / CLOCKS_PER_SEC; printf("timeout_callback ==== 1 […]

如何检查一个进程在Linux中是否是一个系统进程?

我的程序可以build议用户closures一个特定的进程,如果它消耗太多的内存(例如 – Firefox或铬)。 但是,在我的系统(Ubuntu 16.10 GNOME)中,像gnome-shell这样的一些系统特定的进程消耗了太多的内存。 我的客户不知道一个特定的过程是否可以closures。 我如何确定一个进程是否是一个系统进程(如gnome-shell),并避免closures它? 这是我如何获得PID和消耗最大内存的进程的名称: FILE * pipe = popen("ps aux –sort=-%mem | awk 'NR<=2{print $2}'", "r"); if(pipe) { char line[line_buf]; while(fgets(line, sizeof line, pipe) != NULL) { if(sscanf(line, "%d", &_pid) == 1) { _mem->pid = _pid; } } } pclose(pipe); if(_mem->pid != 0) { char command[128], pidname[40]; snprintf(command, sizeof command, […]

如果父进程退出,则挂起subprocess退出

我有以下过程树 test1.sh \- test2.sh \- sleep 600 通常如果我杀了test1.sh进程,subprocesstest2.sh和sleep 600将继续运行。 但是,如果我通过发送信号(SIGSTOP或SIGTSTP)暂停睡眠600进程,然后杀死test1.sh进程,则test2.sh和sleep 600将退出。 为什么? 这是我的testing程序: test1.sh #!/bin/sh ./test2.sh test2.sh #!/bin/sh sleep 600 testing步骤: 运行test1.sh $ ./test1.sh 打开新的控制台并暂停subprocess。 $ kill -19 <sleep pid>或杀死-20 <sleep pid> 杀死父进程test1.sh $ kill <test1.sh pid> 你会发现步骤3之后,test2.sh和sleep 600退出。 错误,如果我只运行step1和step3,忽略step2,test2.sh和睡眠600进程将不会退出。 任何人都可以解释吗? 非常感谢。

如何在Linux下用C ++实现两个定期进程?

我正在Linux下用C ++进行实时编程。 我有两个过程,让我说A和B.一个过程正在定期启动,每5ms。 B过程每10ms启动一次。 过程A正在做一些数据更改。 过程B正在读取该数据并显示它。 我很困惑如何定期运行进程,我应该为每个进程有两个.cpp程序?

并行处理结果写入单个文件

我是Linux新手,最近被介绍给“&”。 我必须运行几个traceroute并将它们存储在一个文件中,我很好奇,如果我能够并行启动这些跟踪路由? 我尝试了以下,但生成的文件中的结果,不分开? 那么,这就是我所认为的。 traceroute -n -z 100 www.yahoo.com >> theLog.log & traceroute -n -z 100 www.abc.com >> theLog.log & 我所要求的甚至有可能做什么? 如果是的话,我应该使用什么命令? 感谢任何指示。

分两步使用DMD:将64位(Linux)

我在64位Ubuntu上运行,并试图让DMD v2.052与Code :: Blocks一起工作。 问题是,Code :: Blocks在两个单独的步骤中编译和链接,我似乎无法解决这个问题。 我的编译器标志(对于这个项目)是-m64,我的链接器标志都是在dmd.conf中提供的。 然而,当我尝试这样做的时候,我会遇到错误 Linking console executable: bin/Debug/Gossamer /usr/bin/ld: skipping incompatible /home/me/devl/sfml2/bindings/d/lib/libdsfml-system.a when searching for -ldsfml-system /usr/bin/ld: cannot find -ldsfml-system /usr/bin/ld: skipping incompatible /home/me/devl/sfml2/bindings/d/lib/libdsfml-graphics.a when searching for -ldsfml-graphics /usr/bin/ld: cannot find -ldsfml-graphics /usr/bin/ld: skipping incompatible /home/me/devl/sfml2/bindings/d/lib/libdsfml-audio.a when searching for -ldsfml-audio /usr/bin/ld: cannot find -ldsfml-audio /usr/bin/ld: skipping incompatible /home/me/devl/sfml2/bindings/d/lib/libdsfml-window.a when searching […]

如何loggingLinux进程的Ram和CPU使用情况

我将如何跟踪可能运行,停止然后用另一个PID重新运行的进程的CPU和RAM使用情况? 我正在寻找在Linux服务器上跟踪所有进程的信息,但问题是当进程停止并重新启动时,它将有一个不同的PID,我不知道如何将其识别为相同的进程。

如何closuresQtsubprocess并让subprocess执行清理代码?

我正在Linux / Qt中启动一个进程,然后使用QProcess启动一些subprocess。 然后最终我想要优雅地closuressubprocess(也就是执行一些清理代码)。 subprocess正在使用QSharedMemory ,现在当我调用QProcess :: close()时,subprocess正在closures而不调用QSharedMemory :: detach() ,结果是所有的进程都closures了,但是还剩下共享内存不清理。 我有subprocess的代码,在代码中有函数cleanup() 。 父进程如何以这样的方式closuresQProcess,以便subprocess执行cleanup() ?