簡體   English   中英

使用fork在兩個進程之間通過char發送字符串char

[英]Send string char by char between two process using fork

我有這個任務,我必須在C / C ++上為linux創建一個程序,它通過char從一個進程向另一個進程發送一個字符串char,當第二個進程收到字符時,它將它們大寫。

這是我寫的代碼,如果有人可以告訴我共享過程是否正確完成或者我錯過了什么。

#include <iostream.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
    int childpid;
    char *string = "Hello";
    char *letter;

    childpid = fork();

    if(childpid == 0) {
        for (int i = 0; i<string.length; i++) {
            letter = string[i];
            printf(letter);
        }
    } else {
        read(letter);
        printf(letter.toupper());
    }

    return 0;
}

代碼更新:

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <unistd.h>

int main(int argc, char *argv[]) {
    pid_t pid;
    int mypipe[2];
    int ret;
    char *string = "Hello";
    char *buf[20];
    int bytesread;

    ret = pipe(mypipe);

    if(ret == -1) {
        perro("Pipe failed");
        exit(1);
    }

    pid = fork();

    if(pid == 0) {
        for(var i = 0; i<string.length; i++) {
            write(mypipe[1],string[i],1);
        }
    } else {
        while( (bytesread = read(mypipe[0],buf,15)) > 0) 
        {
            buf[bytesread] = '\0';
            printf("buf: %s\n", buf.toupper()); 
        }
    }

    return 0;
}

fork()string變量存在於父進程和子進程中。 你只是在其中一個過程中制作toupper() 你缺少的是父母和孩子之間沒有溝通。 父級假設將char傳遞給子級,然后子級應將其設為toupper() 如上所述,實現這種溝通的一種方法是通過pipe

暫無
暫無

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

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