#include #include #include #include #include #include #ifndef BUF_SIZE #define BUF_SIZE 1024 #endif int main() { double a, b, c, discriminant, x1, x2; char buffer[BUF_SIZE]; char result[BUF_SIZE]; int fd_in, fd_out; ssize_t num_read; // Открытие файла с коэффициентами для чтения fd_in = open("coefficients.txt", O_RDWR); if (fd_in == -1) { printf("Ошибка открытия файла coefficients.txt"); return 1; } printf("Файл для чтения успешно открыт\n"); // Чтение данных из файла num_read = read(fd_in, buffer, BUF_SIZE); if (num_read == -1) { printf("Ошибка чтения из файла"); close(fd_in); return 1; } buffer[num_read] = '\0'; // Завершение строки нулевым символом printf("Прочитано в родителе\n"); close(fd_in); printf("%s\n", buffer); // execve("ProcessChild",buffer,NULL); // printf("Если вы читаете эту надпись, то нам не удалось создать дочерний процесс"); // return 0; char* childargv[] = {"первый", "второй", "третий",NULL}; //аргументы командной строки дочернего процесса char* childenv[] = {"первый=один", "второй=два", "третий=три",NULL}; //окружение дочернего процесса execve("ProcessChild",childargv,childenv); //далее код не будет выполняться, если вызов execve завершился удачно printf("Если вы читаете эту надпись, то нам не удалось создать дочерний процесс"); return 0; } #include #include #include #include #include #include #ifndef BUF_SIZE #define BUF_SIZE 1024 #endif extern char **environ; int main(int argc,char* argv[]) { // double a, b, c, discriminant, x1, x2; // char result[BUF_SIZE]; // printf("Я дочерний процесс с id = %d\n",getpid()); // printf("%str",buffer); // if (sscanf(buffer, "%lf %lf %lf", &a, &b, &c) != 3) { // printf("Некорректный формат входных данных\n"); // return 1; // } // printf("Коэффициенты: a=%.2f, b=%.2f, c=%.2f\n", a, b, c); // if (a == 0 && b == 0) { // printf("Невозможно решить уравнение, оба коэффициента a и b равны 0\n"); // strcpy(result, "Невозможно решить уравнение, оба коэффициента a и b равны 0\n"); // return 0; // } // for (size_t i = 0; i < argc; i++)//печатаем аргументы командной строки // { // printf("argv[%d] = %s\n",i,argv[i]); // } for (char** env = environ; *env!=NULL; env++)//печатаем переменные окружения { printf("переменная: %s\n",*env); } return 0; }