process 相关问题

此标记与操作系统进程有关。它还可以指给定平台上的特定构造,例如.NET的System.Diagnostics.Process类

为什么fork()函数返回的主进程的PID值比原来大1?

我尝试编写我的“getpid”克隆,因为我有一个学校项目,而 getpid 是被禁止的功能。所以,我写了这段代码: pid_t mini_getpid(void) { pid_t id; id = fork(); ...

回答 2 投票 0

C# 流程:重定向标准输入导致外部程序出现意外行为

我有一个外部可执行文件 main.exe,当直接从操作系统(Windows)执行时,它工作得非常好。但是,我尝试使用 Process 类从 C# 调用它,并且我

回答 1 投票 0

dotnet项目关闭时不要终止进程

我正在为 Linux 系统(debian)开发一个 dotnet 应用程序。我想从我的应用程序在 Linux 上运行命令。我正在使用这种方法运行命令。如果可以的话我真的不想改变。 公共圣...

回答 0 投票 0

如何使用 C++ 蜜罐检测 Windows 中的哪个进程修改/删除了特定文件?

我需要使用 C++ 检测系统 (Windows) 中的哪个进程修改或删除了特定文件。我创建了一个“诱饵”文件来模拟用于测试勒索软件的蜜罐。 我想确定...

回答 0 投票 0

powershell 中的进程状态

Windows 中的进程可以处于六种状态中的任何一种,即运行、就绪、阻塞、挂起、新建和退出。如何在 Windows 中使用 powershell 了解给定进程(名称、ID)的状态。 在 UNIX 中这个

回答 3 投票 0

基于职位层次结构的休假管理系统审批流程的数据库设计/架构

我不是设计数据库的专家,所以我正在寻求帮助解决这个问题。 所以问题是我如何设计一个数据库,当低级员工(同事)请求休假时需要...

回答 0 投票 0

Multiprocessing Process Pool Executor 阻塞提交功能

我正在尝试将我的 executor.submit 函数调用转换为阻塞函数,以便它一直等到 ProcessPoolExecutor 池有可用的工作人员。 换句话说,最初它应该打印 1,2,

回答 1 投票 0

BPMN 合并独占路径

我想知道这个针对我的问题的具体解决方案是否正确。 流程所有者将信息发送给主管。 主管检查信息,如果信息不充分...

回答 0 投票 0

子进程不能用信号操作

我在将信号从父进程传递给子进程时遇到问题,因为它就像孩子没有正确打开一样,因为当我这样做时 if(oct_pid == 0) 我无法进入。 计算器.c #包括 我在将信号从父进程传递给子进程时遇到问题,因为它就像孩子没有正确打开一样,因为当我这样做时 if(oct_pid == 0) 我无法进入。 计算器.c #include <sys/types.h> #include <sys/stat.h> #include <stdio.h> #include <string.h> #include <sys/file.h> #include <signal.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #include <sys/wait.h> void octal(int fd){ int valor; while (1) { pause(); read(fd,&valor,sizeof(int)); printf("%o",valor); } } void hexa(int fd){ int valor; while (1) { pause(); read(fd,&valor,sizeof(int)); printf("%X",valor); } } void handler(int signal){} int main(){ int canal,pipe_fd[2],octal_pid,hexa_pid; unlink("canal"); if(mkfifo("./canal", 00660)!=0){ printf("Error al crear la pipe"); exit(EXIT_FAILURE); } canal = open("./canal",O_RDONLY); if(canal < 0){ printf("Error al obrir la pipe."); exit(EXIT_FAILURE); } pipe(pipe_fd); octal_pid = fork(); if(octal_pid == -1){ printf("Error al crear el proceso octal.\n"); exit(EXIT_FAILURE); } else if(octal_pid == 0){ close(pipe_fd[1]); octal(pipe_fd[0]); signal(SIGUSR1,octal); } else { hexa_pid = fork(); if(hexa_pid == -1){ printf("Error al crear el proceso hexadecimal.\n"); kill(octal_pid, SIGTERM); exit(EXIT_FAILURE); } else if(hexa_pid == 0){ close(pipe_fd[1]); hexa(pipe_fd[0]); signal(SIGUSR1,hexa); } else { close(pipe_fd[0]); while(1){ char c; int valor; read(canal,&c,sizeof(char)); read(canal,&valor,sizeof(int)); if(c == 'o'){ printf("Calculant en octal ... \n"); write(pipe_fd[1], &valor, sizeof(int)); kill(octal_pid,SIGUSR1); } else if(c == 'h'){ printf("Calculant en hexadecimal ... \n"); write(pipe_fd[1], &valor, sizeof(int)); kill(hexa_pid,SIGUSR1); } else if( c == 'x'){ printf("Sortint...\n"); kill(octal_pid, SIGTERM); kill(hexa_pid, SIGTERM); break; } } close(canal); close(pipe_fd[1]); waitpid(octal_pid, NULL, 0); waitpid(hexa_pid, NULL, 0); } } return 0; } client.c #include <sys/types.h> #include <sys/stat.h> #include <stdio.h> #include <string.h> #include <sys/file.h> #include <signal.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #include <sys/wait.h> int fd, valor; char operacio; int llegir_numero() { char buff [10]; int llegits; llegits=read(0, buff, 10); //llegir del teclat un màxim de 10 chars buff[llegits-1] = (char)0; //canvi del \n per un \0 return(atoi(buff)); //es converteix a enter } int main(){ fd = open("./canal",O_WRONLY); if(fd < 0){ printf("La pipe no s'ha obert correctament."); exit(EXIT_FAILURE); } do{ printf("Introdueix 'o' o 'h', x per acabar\n"); scanf(" %c",&operacio); if(operacio == 'o' || operacio == 'h'){ printf("Introdueix un valor enter positiu:\n"); valor = llegir_numero(); write(fd,&operacio,sizeof(char)); write(fd,&valor,sizeof(int)); } else if(operacio != 'x'){ printf("Lletra incorrecte."); } } while(operacio != 'x'); close(fd); return 0; } 我在这段代码中遇到了 kill(octal_pid,SIGUSR1) 的问题,理论上,当我向子进程 octal_pid 发送信号时,它没有工作,因为我无法进入这个管道,我知道为什么。 谢谢帮助 首先,阅读这个: sigaction和signal有什么区别? 你真的需要在 POSIX 系统上使用 sigaction() 而不是 signal(). 第二,给出 void octal(int fd){ int valor; while (1) { pause(); read(fd,&valor,sizeof(int)); printf("%o",valor); } } 这是错误的: signal(SIGUSR1,octal); 因为传递给信号处理程序的 int 参数是 signal 的值 - 而不是某个文件描述符。您需要找到另一种方法将正确的文件描述符值传递给信号处理程序。 此外,您需要安装信号处理程序(使用sigaction())before您调用fork(),否则您的子进程可以很好地发送信号甚至在父进程安装其信号处理程序之前完成运行. 最后,同一类型的多个信号可以合并为一个信号,因此如果您的子进程发送例如 8 个SIGUSR1 信号,父进程可能只会得到其中一个。还要注意这个问题和答案:Blocking signals in C

回答 1 投票 0

进程从未命名管道读取或更新共享内存中的变量时出现问题 C, linux

首先,感谢您的阅读和帮助! 这是一个多进程多线程的C语言代码。它涉及创建多个工作进程和一个与...进行通信的调度程序线程

回答 1 投票 0

无法通过 ProcessBuilder.start() 运行进程,因为找不到命令

我正在尝试通过 Groovy 运行 mvn ... 命令。 这就是我写的: def mvnPath = System.getenv("MAVEN_HOME") + "/bin/mvn" def pomPath = new File("./pom.xml").

回答 1 投票 0


C、linux 中线程和未命名管道的问题

首先,感谢您的阅读和帮助! 在下面的代码中,它意味着创建 5 个工作进程并监听(读取)来自作为

回答 1 投票 0

Zsh 自动 forkbomb 检测和缓解

我正在尝试编写一个 zsh 脚本来检测并杀死 forkbomb。我知道防止这种情况的最简单方法是在 limits.conf 文件中设置限制,但此分配需要自动

回答 0 投票 0

如何在 PowerShell 或 C# 中获取进程的命令行信息

例如:如果我运行 notepad.exe c: utoexec.bat, 如何在 PowerShell 的 Get-Process 记事本中获取 c:utoexec.bat? 或者如何在 Process.GetProcessesByName("notepad"); 中获取 c: utoexec.bat在 C# 中?

回答 4 投票 0

使用 process.env 将变量从主进程传递到 Electron 中的预加载脚本 - 不错的选择?

我正在开发一个用 Electron 包裹的网络应用程序,我试图找到一种简单的方法将 vars 从主进程传递到 preload.js,这样我以后就可以从我的 BrowserWindow 中获取它。 我知道我们可以使用 IPC 来...

回答 1 投票 0

C、linux 中线程和未命名管道的问题

首先,感谢您的阅读和帮助! 我正在制作一个涉及进程、线程、命名和未命名管道以及消息队列的程序,目标是模拟一个管理

回答 0 投票 0

Process.Start() 抛出 Win32Exception“指定的可执行文件不是该操作系统平台的有效应用程序”

我试图让我的程序在用户的默认浏览器中打开指向本地 HTML 文件的链接,作为打开我的程序帮助页面的快速方法。据我所知,使用 Process.Start(path) 是

回答 0 投票 0

NodeJS 中的 Process 类是否有替代方案?

我打算用NodeJS编写在线裁判项目。据我所知,C# 语言有 Process 类,它对于管理和运行可执行文件非常有用。我们在 Node 中有其他选择吗...

回答 0 投票 0

如果我在 vs 代码中打开文件,则无法捕获进程 ID 和名称

如果以任何模式打开文件,我需要进程 ID 和路径 我尝试了,但我遇到了困难: 如果我用记事本打开,我可以检测到打开该文件的文件的 pid 名称 但如果我用 vs co 打开...

回答 0 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.