123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- #include <unistd.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <string.h>
- #include <sys/types.h>
- #include <math.h>
- #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 <unistd.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <string.h>
- #include <sys/types.h>
- #include <math.h>
- #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;
- }
|