簡體   English   中英

如何將數據從父進程發送到子進程並發出信號

[英]How to send data from parent process to child process and signal

我有兩個進程並行運行。 我希望父母將一些字符發送給孩子。 我想使用 pipe() 並從父進程寫入並向子進程發送信號,然后從子進程檢查信號是否已發送並在子進程中讀取字符。 我怎樣才能做到這一點?

int run() {
    pid_t pid;
    int filds[2];
    pipe(filds);
    char *args[150] = {"./draw.out", NULL}; // child will run executable.
    char buff = '\0';

    if ((pid = fork()) < 0) {  // fork a child process/
        printf("*** ERROR: forking child process failed\n");
        exit(1);
    } else if (pid == 0) {
        execvp(args[0], args); // run program from the child process.
    } else {  // for the parent
            char btnPressed = getch();

            while (btnPressed != 'q'){
            btnPressed = getch(); // gets the char
            write(filds[1],buff, BUFF_SIZE); //write to the pipe.
            // how do i send safe signal to child?
        }

    }
}

首先,您不能同時使用 execvp 和管道。 由於 execvp 用另一個可執行文件替換了子進程。 這意味着父子進程不再共享管道,因為 execvp 創建的新進程具有不同的堆棧。

您可以在共享內存上傳遞數據並向孩子發送信號。 孩子讀取數據后,也可以發送一個信號,表示我拿到了數據。

暫無
暫無

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

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