Это то, что я сделал как часть простого экспериментирования;read() и write() не работают как ожидалось
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int fun()
{
int d=10;
write(1,(int*)d,sizeof(d));
}
int main()
{
int x;
fun();
read(1,(int*)x,4);
printf("x=%d\n",x);
return 0;
}
Как вы можете видеть, что я пытаюсь получить доступ к стоимости d
в fun()
функции через поток ввода-вывода (IO файлов) stdout
; Я пробовал использовать stdin
, но вещь x
Значение не меняется. (Я попробовал в онлайн-среде IDE.) Но в соответствии с моим потоком мысли он должен измениться до значения d
.
Может ли кто-нибудь помочь мне понять, почему это не так?
Пожалуйста, покажите нам пример ввода и ожидаемого вывода. –
Даже если вы исправите вызывающие последовательности (указатели прохода на 'read()' и 'write()'), вы не сможете прочитать, что пишет 'fun()'. Да, вы часто можете читать со стандартного вывода - но если вы не сделали что-то фантастическое (перенаправление ввода-вывода и т. Д.), Чтение со стандартного вывода такое же, как чтение со стандартного ввода, то есть он будет читать то, что вы вводите на клавиатуре , То, что вы написали на стандартный вывод, поступит на экран (если вы не сделали перенаправления ввода-вывода) и не станет частью входных данных. –
@JonathanLeffler Как это сделать? –