[英]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.