我有這個任務,我必須在C/C++上爲linux創建一個程序,在這裏它通過char從一個進程向另一個進程發送字符串char,並且當第二個進程接收到大寫的字符。使用fork在兩個進程之間發送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;
}
您可能想了解['pipe'](http://man7.org/linux/man-pages/man2/pipe.2.html)和['dup2'](http:// man7。組織/ LINUX /人-頁/男2/dup.2.html)。 –
你可能想看看unix管道。在終端輸入'man 2 pipe'。 – juanchopanza
C或C++?選一個。 –