簡體   English   中英

從Bash終端重啟C程序

[英]Restart C program from Bash terminal

我一直在從事學校項目,現在已經在這一步驟上停留了幾天。 任何幫助將不勝感激!

到目前為止,我已經嘗試過:

  • 編譯腳本。 它可以正確編譯,並且可以通過輸入./process.o來運行它,但是我無法做到這一點,所以當我殺死它時,它會重新啟動。 我一直在搜尋和嘗試各種事情,但似乎沒有任何效果,它總是會終止進程,但不會重新啟動它。
  • 殺死-SIGKILL(PID)
  • 殺死2(PID)
  • 殺死1(PID)
  • 殺死-HUP 3155
  • 各種其他命令只能殺死它,似乎沒有任何作用。 我是否需要修改代碼或其他內容? 我很困惑。

這是我要做的:

使用C制作一個新文件。使用名稱process.c保存(此操作)

 #include <stdio.h> #include <unistd.h> int main() { printf("Creating a background process..\\n"); pid_t pid = fork(); if (pid > 0) return 0; /* Host process ends */ if (pid < 0) return -1; /* Forking didn't work */ while(1) { } /* While loop */ return 0; } 

將以下代碼編譯到名為process.o工作程序中,然后啟動該進程。 (這樣做,到現在為止有效)

使用kill命令重新啟動process.o (殺死該進程有效,但不會重新啟動它)

您需要保持父進程運行以監視子進程。 如果父級檢測到該子級不再運行,則可以重新啟動它。

父母可以使用wait系統調用來檢測孩子何時退出。

while (1) {
    pid_t pid = fork();
    if (pid < 0) {
        return -1;
    } else if (pid > 0) {
        // parent waits for child to finish
        // when it does, it goes back to the top of the loop and forks again
        wait(NULL);
    } else {
        // child process
        while (1);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM