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