fork函数小东西

来源:互联网 发布:图纸软件下载 编辑:程序博客网 时间:2024/05/20 00:15

    刚开始学进程、看到例程就自己也想到了一个,敲出来后运行下、和预想的一样;

    除了书本没有什么师傅的弱菜忍不住赶紧来卖弄一下,上代码:



子进程负责随机生成100个字符;

父进程负责将这100个字符重新输出到另外一个文件中、同时将其中的小写字符变成大写字符:

#include"sys/types.h"#include"sys/wait.h"#include"unistd.h"#include"stdio.h"#include"stdlib.h"#include"math.h"int main(){pid_t pid;char *message;int exit_code;printf("fork program starting\n");pid = fork();if(pid != 0 && pid != -1){int stat_val;pid_t child_pid;child_pid = wait(&stat_val);printf("Child has finished: PID = %d\n", child_pid);if(WIFEXITED(stat_val))printf("Child has finished: PID = %d\n", WEXITSTATUS(stat_val));elseprintf("Child terminated abnormally\n");}if(pid == -1){perror("fork failed");exit(1);}else if(!pid){int i,temp;FILE *write;srand((int)time(0));write = fopen("/home/hello/c++_test/hehe", "w");for(i = 0; i < 100; i++){temp = abs( rand() ) % 127;fprintf(write, "%c", temp);}(void)fclose(write);exit_code = 36;}else{int i;char ch;FILE *input, *output;input = fopen("/home/hello/c++_test/hehe", "r");output = fopen("/home/hello/c++_test/hehe2", "w");while((ch = fgetc(input)) != EOF){if('a' <= ch && ch <= 'z')ch-=32;fprintf(output, "%c", ch);}(void)fclose(input);(void)fclose(output);exit_code = 0;printf("ok~\n");}exit(exit_code);}


原创粉丝点击