fork

    0熱度

    1回答

    我很難理解fork()在用作條件時是如何工作的。我知道fork()創建一個子進程作爲父進程的確切副本。我的問題是,在以下程序中創建了多少個進程?下面是代碼: int global = 0; int main() { while(global < 5 && !fork()) { sleep(1); global += 1; } printf("

    0熱度

    1回答

    我的C++程序在Linux下運行,運行了大量的子進程,並且在每個運行子進程之後,關閉所有繼承的fds以防止子進程訪問它們。現在,我的程序也繼承了其父項中的一些fds,在程序啓動時關閉所有繼承的fds會比在每個fork之後重複關閉它們更有意義。 問題是,我真的不知道哪些fds實際上是繼承的,哪些是我的。當我在main()時,很多代碼已經運行,並且程序可能已經創建了一些自己的fds(例如,在庫,靜態對

    3熱度

    1回答

    說我分叉N個孩子。我想在1和2,2和3,4和5之間創建管道,等等。所以我需要一些方法來找出哪個孩子是哪個。下面的代碼是我目前擁有的。我只需要一些方法來告訴那個孩子數字n,是孩子數字n。 int fd[5][2]; int i; for(i=0; i<5; i++) { pipe(fd[i]); } int pid = fork(); if(pid == 0) { }

    0熱度

    2回答

    特別是在Linux/POSIX世界中,需要某些根功能才能進行臨時初始化(例如,讀取根擁有的私鑰文件或打開端口1024或者增加資源限制)的守護程序通常似乎遵循設計模式,他們通過函數調用(如setuid()/setresuid()和setgid()/setresgid())更改其憑據,然後調用fork()將實際程序作爲其子項運行。假設fork() -ing完成「以防萬一」,但是這樣做是或實際的安全考慮

    0熱度

    2回答

    我編寫了一個使用fork創建子進程的程序。在子過程中,我用EXECL將打開使用Firefox的本地HTML頁面: execl("/usr/bin/firefox", "/usr/bin/firefox","/home/xyz/t/webpages/page1.html", (char*)NULL); 在父進程中沉睡了5秒後,我將SIGTERM信號發送到子進程: sleep(5); kill(

    1熱度

    1回答

    我無法弄清楚它是如何工作的。fork系統調用將父進程拆分爲兩個進程,它爲子進程返回零。根據我的輸出,子進程應該是glb = 101.var = 89。但是I我錯了。有人能解釋一下它的工作原理嗎? #include <unistd.h> #include <stdio.h> #include <stdlib.h> int glb=100; int main() { int pi

    0熱度

    2回答

    我在共享內存中獲得了一個帶有n個柱的整數矩陣,所以我創建了n個進程,每個進程創建一個柱的總和。問題是它們不能並行執行。還有就是代碼(這實際上並沒有做的總和,是測試): int pid2[n]; i=0; do{ pid2[i] = fork(); if(pid2[i]==-1) printf("fork() fail!\n"); else i

    0熱度

    2回答

    將&附加到命令的結尾會在後臺啓動它。例如: $ wget google.com & [1] 7072 但是,這會打印一個作業號和PID。是否有可能防止這些? 注:我仍然想保留wget的輸出,這只是我想擺脫的[1] 7072。

    1熱度

    1回答

    我分叉,我自己做出一些改變GH-頁面分支回購。我最終從頭開始創建一個新的,所以現在它不會與原始共享提交歷史記錄。 我現在希望這個新的GH-頁面分支合併回原來的回購協議,取代了原來的GH-頁面分支。 當我嘗試進行比較,並創建一個pull請求,我得到在github此錯誤。 Forked_Repo:gh-pages and Original_Repo:gh-pages are entirely diff

    -1熱度

    2回答

    這是SOR到目前爲止,我已經做了: #include <stdio.h> #include <stdlib.h> int main() { int p1,p2,p3,p4,i; int left,leftPid; int right; left=fork(); right=fork(); for(i=0;i<=2;i++)