fork

    -2熱度

    1回答

    我對函數fork返回的值有點困惑。據我所知,值0是child過程和值>0是爲parent過程。 我具有低於 int main() { int pid; pid = fork(); if(pid == 0) //DO SOMETHING else //DO SOMETHING ELSE return 0; } 的va

    -1熱度

    1回答

    #include <stdio.h> #include <sys/types.h> #include <unistd.h> #include <stdlib.h> void forkexample() { int x = 1; if (fork() == 0) { //printf("this is Child "); ++

    0熱度

    1回答

    我想知道您是否可以更改參數 waitpid() 此刻我需要連續變量輸出(0.50)作爲打印內容。但是,考慮到waitpid()只接受整數,當我嘗試打印輸出時,它給我0.不確定如何解決這個問題,或者如果這甚至是問題。 計算是指看起來像(1+(2 * 3)/(2 * 7))= 0.5 #include <stdio.h> #include <stdlib.h> #include <unistd.h

    -3熱度

    2回答

    我想知道if(fork()== 0) 在下面的程序中後面的控件將在哪裏控制 Control到if(fork()== 0)的下一個語句是什麼? #include<stdio.h> #include <sys/types.h> #include<unistd.h> void forkexample() { // child process because return value z

    1熱度

    2回答

    我試圖確定的處理多少總數有以下代碼: #include <stdio.h> #include <unistd.h> int main() { int i = 1; if (fork()) //parent process will return PID of child. i++; else if (fork()) //child process (be

    0熱度

    1回答

    我正在處理需要我創建shell的任務。我需要在自己的過程中運行大多數命令。但是,當我需要在所有子進程之間實現管道時,會遇到困難。 從我迄今爲止所瞭解的是,我應該在父進程中創建所有管道,然後將管道複製到STDIN/STDOUT。所以我做了,對於這樣的每個命令創建一個新的管道功能: int count = 2 * amountOfCommands int fd[count]; for (int i

    0熱度

    1回答

    在此論壇中有許多與讀寫管道有關的問題,但我無法解決我的問題。 下面的代碼片段,並以下的事情: 通過命令行參數的文件名是通過pipe_p傳遞給子進程 子進程打開指定的文件,並將它的內容pipe_c父進程閱讀並在屏幕上顯示。 一切工作正常,但父進程無法從管道讀取數據(因爲它不打印任何東西)。 我觀察到數據被成功寫入子進程,因爲我能夠通過管道在子進程塊中打印內容,但不能在父進程中打印內容。 注意:步驟4

    0熱度

    1回答

    我想創建一個進程樹,但這裏是我的輸出是:https://gyazo.com/a71f4e095b69080a6d6a11edd2c0df27 問題是我想使它看起來像我畫在右邊的圖,但可以似乎不知道如何。我正在打印每個子進程的父ID,然後這樣做後,我將從2開始刪除它們,然後是1(通過在5秒後發送SIGKILL信號)。 如何使流程樹看起來像所需的結果?這裏是我的代碼: #include <stdio.

    0熱度

    1回答

    當我運行我的代碼第一printParams()呼叫完美的作品。但每次調用fork()後struct失去其所有的char數組值。我並不熟悉指針,但我可以說這個問題的根源可能是基於指針的。例如,第一printParams()將打印出所有在Parse()功能分配的值的。但fork()後,所有的整數值如background和argumentCount的顯示,但沒有或具有inputRedirect相關聯的字

    0熱度

    1回答

    爲什麼在第22行的打印結果是1而不是3? count是一個全局變量,它在handlerA中已經被修改過,爲什麼它沒有保留它在21和22行的值? 1 pid_t pid; 2 int count = 0; 3 4 void handlerA(int sig) { 5 count += 2 6 printf("count = %d\n", count); 7 fflush(stdo