1570af302Sopenharmony_ci/* 2570af302Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3570af302Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4570af302Sopenharmony_ci * you may not use this file except in compliance with the License. 5570af302Sopenharmony_ci * You may obtain a copy of the License at 6570af302Sopenharmony_ci * 7570af302Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8570af302Sopenharmony_ci * 9570af302Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10570af302Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11570af302Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12570af302Sopenharmony_ci * See the License for the specific language governing permissions and 13570af302Sopenharmony_ci * limitations under the License. 14570af302Sopenharmony_ci */ 15570af302Sopenharmony_ci 16570af302Sopenharmony_ci#include <errno.h> 17570af302Sopenharmony_ci#include <stdlib.h> 18570af302Sopenharmony_ci#include <unistd.h> 19570af302Sopenharmony_ci#include <sys/wait.h> 20570af302Sopenharmony_ci#include "functionalext.h" 21570af302Sopenharmony_ci 22570af302Sopenharmony_ci/** 23570af302Sopenharmony_ci * @tc.name : fork_0100 24570af302Sopenharmony_ci * @tc.desc : The function call is successful and the process can be created 25570af302Sopenharmony_ci * @tc.level : Level 0 26570af302Sopenharmony_ci */ 27570af302Sopenharmony_civoid fork_0100() 28570af302Sopenharmony_ci{ 29570af302Sopenharmony_ci pid_t fpid; 30570af302Sopenharmony_ci int count = 0; 31570af302Sopenharmony_ci int options = 0; 32570af302Sopenharmony_ci const char *sign_r = "1"; 33570af302Sopenharmony_ci const char *sign_f = "0"; 34570af302Sopenharmony_ci char list1[2]; 35570af302Sopenharmony_ci char list2[2]; 36570af302Sopenharmony_ci 37570af302Sopenharmony_ci fpid = fork(); 38570af302Sopenharmony_ci if (fpid < 0) { 39570af302Sopenharmony_ci t_error("%s error in fork!", __func__); 40570af302Sopenharmony_ci } else if (fpid == 0) { 41570af302Sopenharmony_ci FILE* fp = fopen("test1.txt", "w+"); 42570af302Sopenharmony_ci if (!fp) { 43570af302Sopenharmony_ci t_error("failed to open test1.txt for writing"); 44570af302Sopenharmony_ci } 45570af302Sopenharmony_ci fwrite(sign_r, sizeof(char), strlen(sign_r), fp); 46570af302Sopenharmony_ci fclose(fp); 47570af302Sopenharmony_ci _exit(EXIT_SUCCESS); 48570af302Sopenharmony_ci } else { 49570af302Sopenharmony_ci FILE* fp = fopen("test2.txt", "w+"); 50570af302Sopenharmony_ci if (!fp) { 51570af302Sopenharmony_ci t_error("failed to open test2.txt for writing"); 52570af302Sopenharmony_ci } 53570af302Sopenharmony_ci fwrite(sign_r, sizeof(char), strlen(sign_r), fp); 54570af302Sopenharmony_ci fclose(fp); 55570af302Sopenharmony_ci waitpid(fpid, NULL, options); 56570af302Sopenharmony_ci 57570af302Sopenharmony_ci FILE *fp1 = fopen("test1.txt", "r"); 58570af302Sopenharmony_ci if (!fp1) { 59570af302Sopenharmony_ci t_error("failed to open test1.txt for reading"); 60570af302Sopenharmony_ci } 61570af302Sopenharmony_ci FILE *fp2 = fopen("test2.txt", "r"); 62570af302Sopenharmony_ci if (!fp2) { 63570af302Sopenharmony_ci t_error("failed to open test2.txt for reading"); 64570af302Sopenharmony_ci } 65570af302Sopenharmony_ci fread(list1, sizeof(list1), 1, fp1); 66570af302Sopenharmony_ci fread(list2, sizeof(list2), 1, fp2); 67570af302Sopenharmony_ci EXPECT_EQ("fork_0100", list1[0], '1'); 68570af302Sopenharmony_ci EXPECT_EQ("fork_0100", list2[0], '1'); 69570af302Sopenharmony_ci 70570af302Sopenharmony_ci fclose(fp1); 71570af302Sopenharmony_ci fclose(fp2); 72570af302Sopenharmony_ci remove("test1.txt"); 73570af302Sopenharmony_ci remove("test2.txt"); 74570af302Sopenharmony_ci } 75570af302Sopenharmony_ci} 76570af302Sopenharmony_ci 77570af302Sopenharmony_ciint main(int argc, char *argv[]) 78570af302Sopenharmony_ci{ 79570af302Sopenharmony_ci fork_0100(); 80570af302Sopenharmony_ci return t_status; 81570af302Sopenharmony_ci} 82