waitpid

    0热度

    1回答

    我就遇到了这个问题,几个小时前畅通。 即使我有固定的,我只是不明白为什么会这样。 signal(SIGHUP, sighupHandler); . . . // sync with child by getting a char written by child fgetc(pipe_in); close(pipe_in); int status; if(waitpid(initP

    -1热度

    2回答

    #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<sys/wait.h> #define LG_LIGNE 256 int main(void){ char ligne[LG_LIGNE]; while(1){//afficher un symbole d'inv

    0热度

    1回答

    我正在为大学做一个小型项目,我不知道如何在后台执行命令。我知道的一件事是我必须使用waitpid()和sigaction(),但我不知道如何。如果有人愿意帮我一把,我会很乐意。下面是我使用的代码的一部分,以利用minishell命令。 void execute_command_line(command* cmds, int n){ pid_t id,pid; int sta

    0热度

    1回答

    我看到,在sys_wait4(即通过调用达到wait()或waitpid()),我们插入当前处理成保存在其结构任务提供专门的队列: DECLARE_WAITQUEUE(wait, current); add_wait_queue(¤t->wait_chldexit,&wait); 所以,如果我要检查,如果由于致电wait()或waitpid(),某些进程正在等待,我需要检查它是

    0热度

    1回答

    说我在子进程和父进程之间创建一个管道,子进程正常结束,子进程的管道是否会自动关闭? 此外,如果子进程也有一个子进程,并且子进程以分段错误结束,它是否也会终止我的孙子进程?我的意思是从流程表中删除它(我不需要等待它)。 编辑: 例如,对于下面的代码,我在子进程中生成一个分段错误,并尝试在父进程中等待它。运行程序后,waitpid返回-1,但是当我检查WIFEXITED(状态)时,看起来像子进程程序正

    0热度

    1回答

    我正在尝试使用fork系统调用创建进程,然后等待子进程。我已经使用了以下内容: waitpid(pid,& status,0); 1)第一个问题是状态是8位向左移动,例如,如果子进程返回1,则waitpid函数返回状态变量中状态的值为256.请让我知道为什么它这样做。 2)根据手册,waitpid等待子进程改变状态。但随后又表示: “等待()系统调用挂起调用进程的执行,直到 它的一个子终止呼叫等待

    0热度

    1回答

    我编码一个简单的Linux壳C. 有时用叉子,然后执行无阻塞命令时 - 我的下一个printf消失。我猜这是因为子进程正在写入stdout。 如果我使用waitpid就没有问题 - 因为我的下一个printf只会在子进程终止后打印。有时用户需要执行非阻塞命令 - 然后我不会使用waitpid - 然后我的下一个printf将消失。 如果我使用sleep(1)它也解决了这个问题。但我想知道是否有一种

    1热度

    1回答

    为了知道是否等待()工作过,会是正确的,以检查它像下面?从理论上讲,如果等待()不会失败,应该返回到父进程结束的孩子PID,否则父PID为1,对不对? switch (process = fork()) { case -1: // Fork fail perror("Fork failed"); exit(EXIT_FAILURE); c

    2热度

    1回答

    我尝试在下面的代码的同时,开始100个处理: int cnt = 0; void sig_handler(int signo) { pid_t pid; int stat; pid = wait(&stat); cout << "cnt:" << ++cnt << ", pid:" << pid << " signal:" << signo << end

    1热度

    2回答

    我正在使用一个Perl脚本,它使用 waitpid($pid, 0)等待当前进程完成。 但是print在此之后编写的陈述waitpid在过程完成之前正在打印它。 我想知道为什么waitpid不是先等待流程完成。 此外,运行过程的控制是在不同的模块下,而不是这个perl脚本的一部分。只能访问进程的pid和名称。我无法更改调用该过程的模块中的任何内容。