Tried looking for a solution but couldn't find anything. If I'm doing 
anything wrong please let me know. :)

If I run the following,
foo = open("foo" ,"w")
ccall(:fprintf, Int, (Ptr{Void}, Cstring), Libc.FILE(foo).ptr, "hello, 
world\n")
flush(foo)
close(foo)
foo will exists as a file in my current directory, but will not contain 
"hello, world\n", only when I exit julia will it write to foo.

When I add 
ccall(:fflush, Int, (Ptr{Void},), C_NULL)
at the end, then foo will contain "hello, world\n".

Here's the example output.
samuelmassinon ~$ cat foo
cat: foo: No such file or directory
samuelmassinon ~$ julia
               _
   _       _ _(_)_     |  A fresh approach to technical computing
  (_)     | (_) (_)    |  Documentation: http://docs.julialang.org
   _ _   _| |_  __ _   |  Type "?help" for help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 0.5.0-dev+3075 (2016-03-09 17:54 UTC)
 _/ |\__'_|_|_|\__'_|  |  Commit 597dc7b (0 days old master)
|__/                   |  x86_64-apple-darwin15.2.0

julia> foo = open("foo" ,"w")
IOStream(<file foo>)

julia> ccall(:fprintf, Int, (Ptr{Void}, Cstring), Libc.FILE(foo).ptr, 
"hello, world\n")
13

julia> flush(foo)
IOStream(<file foo>)

julia> close(foo)

shell> cat foo

julia> exit()
samuelmassinon ~$ cat foo
hello, world


I don't think I should have to use fflush to write to a file from c. Is 
there a better way of doing this that isn't hacky?

Thanks!

Reply via email to