Why doesn't this piece of code work?

kdevel kdevel at vogtner.de
Sun May 15 12:27:45 UTC 2022


On Sunday, 15 May 2022 at 12:19:22 UTC, SvGaming wrote:
[...]
>> This code runs as expected.
>
> Strange. It does not for me. I even tried different compilers.
> It simply does not ask for user input here where it is supposed 
> to:
> ```d
> writef("Type the path to your USB drive: ");
> string cont = readln;
> writeln(cont); // there was no variable named "a"
> ```

Install the `strace` program (I assume you are running Linux) and 
start your program under strace:

```
    $ strace -f <name of the executable>
```

Then examine the system calls. On my machine I get this:

```
[...]
mmap(NULL, 4194304, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffff6beb000
read(4, "", 4096)                       = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
read(4, "", 4096)                       = 0
wait4(26713, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], 0, NULL) = 
26713
close(4)                                = 0
munmap(0x7ffff7ff5000, 4096)            = 0
write(1, "\n", 1
)                       = 1
fstat(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 10), ...}) = 
0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 
-1, 0) = 0x7ffff7ff5000
write(1, "Type the path to your USB drive:"..., 33Type the path 
to your USB drive: ) = 33
read(0,
```

Here the program waits for input.


More information about the Digitalmars-d-learn mailing list